![](/img/trans.png)
[英]Sum column in one dataframe based on row value of another 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.