繁体   English   中英

根据同一索引/行中其他 dataframe 的值求和一个 dataframe

[英]Sum one dataframe based on value of other dataframe in same index/row

我想根据不同的 dataframe 的值有条件地对 dataframe 的值求和。 例如说我有两个数据框:

df1 = pd.DataFrame(data = [[1,-1,5],[2,1,1],[3,0,0]],index=[0,1,2],columns = [0,1,2])

index   0   1   2        
-----------------
0       1   -1   5    
1       2   1   1  
2       3   0   0  
df2 = pd.DataFrame(data = [[1,1,3],[1,1,2],[0,2,1]],index=[0,1,2],columns = [0,1,2])

index   0   1   2    
-----------------
0       1   1   3   
1       1   1   2  
2       0   2   1  

现在我想要的是,例如,如果 df1 的行/索引值等于 1,则将这些值在 df2 中的位置相加。

在此示例中,如果条件为 1,则 df2 的总和将为 4。如果条件为 0,则结果将为 3。

Pandas query的另一个选项:

df2.query("@df1==1").sum().sum()
# 4

您可以使用带有where的掩码:

df2.where(df1.eq(1)).to_numpy().sum()
# or
# df2.where(df1.eq(1)).sum().sum()

output: 4.0

中间的:

df2.where(df1.eq(1))
     0    1    2
0  1.0  NaN  NaN
1  NaN  1.0  2.0
2  NaN  NaN  NaN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM