我想比较同一数据帧中的两个cloumns并计算总和
这是我的代码:
log4j.rootCategory=DEBUG, FILE, CA
log4j.logger.com.*=debug
这是我的dataFrame:
sum=0
if df1['sma'] < df1['H+L'] :
sum=sum + df1['H+L']
print (sum)
输出是所有行的总和。 但总是我收到此错误消息
系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
我不明白这个问题。
答案 0 :(得分:0)
我相信您需要使用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
答案 1 :(得分:-1)
以下应该有效;
df1.apply(lambda x: x['H+L'] if x['sma']<x['H+L'] else 0, axis = 1).sum()