謝謝你的建議,下面,我已經修改了我的問題,以使其更清晰Python的大熊貓ValueError異常
我有一個數據幀(BP)與平衡,以及在列1(年)的集合 - 6。
import pandas as pd
bp = pd.DataFrame({'Balance': {0: 20000, 1: 2000, 2: 7000},
'1': {0: 500, 1: 400, 2: 100},
'2': {0: 1500, 1: 500, 2: 2000},
'3': {0: 0, 1: 1000, 2: 3000},
'4': {0: 0, 1: 500, 2: 20},
'5': {0: 0, 1: 50, 2: 0},
'6': {0: 0, 1: 0, 2: 0},
},columns=['Balance','1','2','3','4','5','6'])
我試圖在下一年投資餘額(所以第1欄的餘額應該是第1年的開始餘額少收集)。但是,與此同時,如果預計沒有更多收集,我想將餘額記爲零。
gbv = bp.copy()
startcol =1
endcol = 7
for i in range(startcol,endcol):
gbv.iloc[:,i] = gbv.iloc[:,i-1] - bp.iloc[:,i]
gbv[gbv < 0] = 0
gbv
上面的代碼工作,但不寫下來的餘額爲零,如果沒有更多的徵收預計,我曾嘗試以下,但是這給出了一個錯誤。我想這是因爲我正在比較行(檢查bp是否有將來的集合),gbv.iloc [:,i]強制結果在總列上。不知道我應該怎麼做,但。
gbv = bp.copy()
startcol =2
endcol = 14
for i in range(startcol,endcol):
if bp.iloc[:,i:endcol].sum(axis=0) == 0:
gbv.iloc[:,i]= 0
else:
gbv.iloc[:,i] = gbv.iloc[:,i-1] - bp.iloc[:,i]
gbv[gbv < 0] = 0
gbv
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-22-1920f826f3ea> in <module>()
4 endcol = 14
5 for i in range(startcol,endcol):
----> 6 if bp.iloc[:,i:endcol].sum(axis=0) == 0:
7 gbv.iloc[:,i]= 0
8 else:
/Users/Jelmer/anaconda/lib/python3.5/site-packages/pandas/core/generic.py in __nonzero__(self)
951 raise ValueError("The truth value of a {0} is ambiguous. "
952 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 953 .format(self.__class__.__name__))
954
955 __bool__ = __nonzero__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我試圖得到下面的輸出:
Balance 1 2 3 4 5 6
0 20000 19500 18000 0 0 0 0
1 2000 1600 1100 100 0 0 0
2 7000 6900 4900 1900 1880 0 0
任何建議,歡迎!
究竟是什麼「理想的結果」。 – MSeifert
如果預計沒有進一步的收藏,將餘額記爲零,並將餘額設置爲零(當收藏>餘額時) – Jelmerd
對不起,我應該更具體一些:請包括'gbv'應該在最後看起來如何。就像你對輸入做的一樣。 :)如果你有結果來驗證它被正確理解*,那麼理解文本就容易多了。 – MSeifert