Pandas,用给定列的平均值替换行

fil*_*ppo 0 python numpy pandas

我对 Pandas 还很陌生,不幸的是目前我没有太多时间来深入研究它。

我有一个像这样的数据框:

   x  y  z  class     id  other-numeric-field
0  8  8  5      1  1014f             0.388640
1  2  3  4      0  3ba1d             0.431008
2  5  1  6      1  1014f             0.388640
3  7  9  6      1  1014f             0.388640
4  6  9  1      0  7a5d7             0.476972
Run Code Online (Sandbox Code Playgroud)

我想将所有行替换为class与列的平均值相同的行['x', 'y', 'z']

数据框可以包含其他列,无论是否为数字,这些列在同一类中通常都是相等的,但如果它们不是,我真的不在乎丢失。如果它也适用于非数字字段,我可以保留第一次出现或只是对它们进行平均。

Max*_*axU 5

那是你要的吗?

In [18]: df[['x','y','z']] = df.groupby('class')[['x','y','z']].transform('mean')

In [19]: df
Out[19]:
          x  y         z  class     id  other-numeric-field
0  6.666667  6  5.666667      1  1014f             0.388640
1  4.000000  6  2.500000      0  3ba1d             0.431008
2  6.666667  6  5.666667      1  1014f             0.388640
3  6.666667  6  5.666667      1  1014f             0.388640
4  4.000000  6  2.500000      0  7a5d7             0.476972
Run Code Online (Sandbox Code Playgroud)