gpt4 book ai didi

python - 合并数据框中的多个列

转载 作者:太空宇宙 更新时间:2023-11-04 00:35:50 25 4
gpt4 key购买 nike

我想知道如何将所有以相同名称开头的列合并为一个,作为它们的平均值或总和。

例如:

           Over_100         Over_200        Over_300_et
1 10 50 60

会给予

           Overs_mean 
1 40

或者:

           Overs_sum 
1 120

谢谢!

最佳答案

从你的例子

df.filter(like='Over').mean(1)

1 40.0
dtype: float64

制作数据框

df.filter(like='Over').mean(1).to_frame('Overs_mean')

Overs_mean
1 40.0

要获得更完整的解决方案,请使用 groupby
考虑下面构造的数据框 df:

np.random.seed([3,1415])
d1 = pd.DataFrame(np.random.randint(10, size=(5, 3))).add_prefix('A_')
d2 = pd.DataFrame(np.random.randint(10, size=(5, 3))).add_prefix('B_')
d3 = pd.DataFrame(np.random.randint(10, size=(5, 3))).add_prefix('C_')

df = pd.concat([d1, d2, d3], axis=1)

print(df)

我们将按以相同内容开头直到第一个下划线的列分组。

means = df.groupby(
df.columns.str.split('_').str[0], axis=1
).mean().add_suffix('_mean')
print(means)

A_mean B_mean C_mean
0 3.000000 4.000000 7.000000
1 6.000000 3.333333 5.666667
2 4.666667 6.666667 4.666667
3 2.666667 4.000000 5.000000
4 4.333333 7.000000 6.666667

只获取以 A 开头的那些列并将其与其余列组合回去:

a_cols = df.columns.str.startswith('A')

df.loc[:, ~a_cols].join(df.loc[:, a_cols].mean(1).rename('A_mean'))

B_0 B_1 B_2 C_0 C_1 C_2 A_mean
0 7 3 2 8 7 6 3.000000
1 4 3 3 4 7 6 6.000000
2 6 7 7 2 6 6 4.666667
3 4 5 3 5 2 8 2.666667
4 7 5 9 7 5 8 4.333333

关于python - 合并数据框中的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44078350/

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