比较同一数据框中的两列

时间:2018-12-03 11:55:54

标签: python pandas dataframe

我想比较同一数据帧中的两个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()。

我不明白这个问题。

2 个答案:

答案 0 :(得分:0)

我相信您需要使用boolean indexingloc进行过滤并使用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()