python - 仅相似列上的两个数据框的 Pandas 平均值

标签 python pandas

我有一个独特的要求,我需要两个数据帧中公共(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/

相关文章:

python - 查询字符串值的数据框列

python - 无法使用 NetMQ 在 Unity3d 和 Python 之间发送消息

python三角形角度返回null

Python,不同类型的关键字

python - 连接 pandas 数据框中较早行的值

python - Pandas iterrows 获取行字符串作为列表

python - 为 Django 中创建的每个新对象分配了错误的 id

python - 调试期间的私有(private)变量

python - Pandas:基于列 Dtype 的通用数据插补

python - 合并 Pandas 数据帧使用太多内存