我想对 Pandas 数据框中一列的数据求平均值,因为它们共享存储在同一数据框中另一列中的相同“id”。为了简单起见,我有:
我想要:
很明显,如果“节点”的值相同,“nx”和“ny”列元素已被平均。另一方面,“maille”列必须保持不变。 我正在尝试使用 groupby,但直到现在还无法保持“maille”列的原样。
有什么想法吗?
答案 0 :(得分:4)
使用 GroupBy.transform
指定列表中的列名称以进行聚合并分配回:
cols = ['nx','ny']
df[cols] = df.groupby('nodes')[cols].transform('mean')
print (df)
DataFrame.update
的另一个想法:
df.update(df.groupby('nodes')[cols].transform('mean'))
print (df)