[英]Compare two columns in the same dataframe
我想比較同一數據幀中的兩個cloumns並計算總和
這是我的代碼:
sum=0
if df1['sma'] < df1['H+L'] :
sum=sum + df1['H+L']
print (sum)
這是我的dataFrame:
df1 = pd.DataFrame({'sma':[1, 5, 2],
'Low':[1,2,3],
'H+L':[10, 20, 0]},
index=pd.date_range('2018-11-30', periods=3)).T
print (df1)
2018-11-30 2018-12-01 2018-12-02
sma 1 5 2
Low 1 2 3
H+L 10 20 0
輸出是所有行的總和。 但我總是收到此錯誤消息
系列的真實值是不明確的。 使用a.empty,a.bool(),a.item(),a.any()或a.all()。
我不明白這個問題。
我相信你需要通過過濾boolean indexing
與loc
和使用的sum
:
df1 = pd.DataFrame({'sma':[1, 5, 2],
'H+L':[10, 20, 0]})
print (df1)
sma H+L
0 1 10
1 5 20
2 2 0
print (df1.loc[df1['sma'] < df1['H+L'],'H+L']))
0 10
1 20
Name: H+L, dtype: float64
out = df1.loc[df1['sma'] < df1['H+L'],'H+L'].sum()
print (out)
30
如果使用行:
df1 = pd.DataFrame({'sma':[1, 5, 2],
'H+L':[10, 20, 0]}).T
print (df1)
0 1 2
sma 1 5 2
H+L 10 20 0
out = df1.loc['H+L', df1.loc['sma'] < df1.loc['H+L']].sum()
print (out)
30
跟隨應該起作用;
df1.apply(lambda x: x['H+L'] if x['sma']<x['H+L'] else 0, axis = 1).sum()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.