簡體   English   中英

比較同一數據框中的兩列

[英]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 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

跟隨應該起作用;

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM