gpt4 book ai didi

python - 计算数据框中的平均值并添加到新列

转载 作者:太空宇宙 更新时间:2023-11-03 15:32:05 24 4
gpt4 key购买 nike

我需要计算具有恒定步长的列的平均值(按行计算,没有索引)。

我已经对前4列做了简单的操作。它工作得很好。之后,我为数据框创建了一个包含列名(用于存储平均值)的列表。我发现我可以使用 applylambda 来做到这一点。我尝试了很多变体来获得结果,但我还没有找到解决方案。

data= np.arange(400).reshape(20,20)
df=pd.DataFrame(data=data)
df.columns=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T']
df['A1_avg'] = df[['A', 'B', 'C', 'D']].mean(axis=1)
colnames_avg=['A1_avg', 'A2_avg', 'A3_avg', 'A4_avg', 'A5_avg']
df.head()

我已经尝试使用此代码生成 5 个额外的列,其中包含多个数据子集的平均值:

 df[colnames_avg]=df[colnames_avg].applymap(lambda x: df[['A', 'B', 'C', 'D'], ['E', 'F', 'G', 'H'], ['I', 'J', 'K', 'L'],['M', 'N', 'O', 'P'],['Q', 'R', 'S', 'T']].mean(axis=1)

是否可以使用具有预定义步骤(例如 4)的 range 函数来执行此操作?

最佳答案

我会在循环中按如下方式执行此操作,遍历列并将它们分成每组 4 列(最后一组可能较小):

cols=list(df.columns)
while len(cols) > 0:
group= cols[:4]
cols= cols[4:]
df['mean_' + '_'.join(group)]= df[group].mean(axis='columns')

结果是这样的

df[[col for col in df if col.startswith('mean_')]]

mean_A_B_C_D mean_E_F_G_H mean_I_J_K_L mean_M_N_O_P mean_Q_R_S_T
0 1.5 5.5 9.5 13.5 17.5
1 21.5 25.5 29.5 33.5 37.5
2 41.5 45.5 49.5 53.5 57.5
3 61.5 65.5 69.5 73.5 77.5
4 81.5 85.5 89.5 93.5 97.5
5 101.5 105.5 109.5 113.5 117.5
...

如果您想要像 A1... 这样的结果列,只需在循环中添加一个计数器变量并使用 'A{}'.format(i) 作为列名。

关于python - 计算数据框中的平均值并添加到新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57441966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com