您好我是使用來自SAS背景的熊貓的新手,我嘗試使用以下代碼將連續變量分割爲多個波段。在熊貓數據框中爲每一行循環IF語句
var_range = df['BILL_AMT1'].max() - df['BILL_AMT1'].min()
a= 10
for i in range(1,a):
inc = var_range/a
lower_bound = df['BILL_AMT1'].min() + (i-1)*inc
print('Lower bound is '+str(lower_bound))
upper_bound = df['BILL_AMT1'].max() + (i)*inc
print('Upper bound is '+str(upper_bound))
if (lower_bound <= df['BILL_AMT1'] < upper_bound):
df['bill_class'] = i
i+=1
我期待的代碼檢查的df['BILL_AMT1']
值是電流回路boundings內,並相應設置一個df['bill_class']
。
我得到以下錯誤:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我認爲,如果條件正確評估,但錯誤是由於分配新列循環計數器的值。
任何人都可以解釋發生了什麼問題或建議替代方案。
@DSM:是的,完全是我的錯。 – unutbu
好多了。 :-)雖然我們可能應該推薦一種矢量化的方法(無論是pd.cut還是np.digitize - 我看到你已經有至少一個pd.cut答案引用..) – DSM
謝謝。我最終使用@DMS建議的方法,因爲我並不真正理解.loc並完全屏蔽了這些東西。 –