我有一个独特的要求,我需要两个数据帧中公共(public)列(每行)的平均值。
我想不出一种Python式的方法来做到这一点。我知道我可以循环遍历两个数据框并找到公共(public)列,然后获取键匹配的行的平均值。
假设我有以下数据框: DF1:
Key A B C D E
K1 2 3 4 5 8
K2 2 3 4 5 8
K3 2 3 4 5 8
K4 2 3 4 5 8
DF2:
Key A B C D
K1 4 7 4 7
K2 4 7 4 7
K3 4 7 4 7
K4 4 7 4 7
结果 DF 应该是 Key 匹配的每列每行两个 DF 的平均值。 结果DF:
Key A B C D
K1 3 5 4 6
K2 3 5 4 6
K3 3 5 4 6
K4 3 5 4 6
我知道我应该将示例代码放在这里,但到目前为止我想不出任何逻辑来实现这一点。
最佳答案
使用DataFrame.add
并使用Key
作为索引:
df1.set_index('Key').add(df2.set_index('Key')).dropna(axis=1) / 2
A B C D
Key
K1 3 5 4 6
K2 3 5 4 6
K3 3 5 4 6
K4 3 5 4 6
替代concat
+ groupby
。
pd.concat([df1, df2], axis=0).dropna(axis=1).groupby('Key').mean()
A B C D
Key
K1 3 5 4 6
K2 3 5 4 6
K3 3 5 4 6
K4 3 5 4 6
关于python - 仅相似列上的两个数据框的 Pandas 平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50636010/