创建一个新数据集,显示每列的“平均值”

问题描述 投票:0回答:2

我有一个如下所示的数据框:

N 地点 数量 C H E G D
1 安格斯 25 33 45 23 60 43
2 阿吉尔 43 23 12 56 19 45
3 艾尔什 14 46 27 92 14 12

我想创建一个迭代“C”、“H”、“E”、“G”、“D”的函数,并创建一个新的数据帧,其中行值替换为平均值,例如:meanC = 33/25,平均值H = 45/25,平均值E = 23/25。

我不太确定该怎么做。 任何帮助将不胜感激,谢谢!

pandas dataframe function data-analysis mean
2个回答
0
投票

在选定的列上使用

df.div
,传递
df['Number']
axis=0
(按行)并链
df.add_prefix

df[cols].div(df['Number'], axis=0).add_prefix('mean')

      meanC     meanH     meanE    meanG     meanD
0  1.320000  1.800000  0.920000  2.40000  1.720000
1  0.534884  0.279070  1.302326  0.44186  1.046512
2  3.285714  1.928571  6.571429  1.00000  0.857143
  • 使用
    df.join
    将其添加到原始
    df
    的(部分?):
out = (df[df.columns.difference(cols)]
       .join(
           df[cols].div(df['Number'], axis=0).add_prefix('mean')
           )
       )

输出

   N  Number  Place     meanC     meanH     meanE    meanG     meanD
0  1      25  Angus  1.320000  1.800000  0.920000  2.40000  1.720000
1  2      43  Argyl  0.534884  0.279070  1.302326  0.44186  1.046512
2  3      14  Ayrsh  3.285714  1.928571  6.571429  1.00000  0.857143

0
投票

如果你想要一个new DataFrame,你可以使用:

cols = ['C', 'H', 'E', 'G', 'D']

out = (df[cols].div(df['Number'], axis=0)
       .combine_first(df).reindex_like(df)
      )

要修改输入:

cols = ['C', 'H', 'E', 'G', 'D']

df[cols] = df[cols].div(df['Number'], axis=0)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.