gpt4 book ai didi

Pandas 在逗号分隔的列中找到平均值

转载 作者:行者123 更新时间:2023-12-04 09:25:50 26 4
gpt4 key购买 nike

我想根据以逗号分隔的一列取平均值,并在另一列取平均值。
我的文件看起来像这样:

ColumnA ColumnB
A, B, C 2.9
A, C 9.087
D 6.78
B, D, C 5.49
我的输出应该是这样的:
A   7.4435
B 5.645
C 5.83
D 6.135
我的代码是这样的:
df = pd.DataFrame(data.ColumnA.str.split(',', expand=True).stack(), columns= ['ColumnA'])  
df = df.reset_index(drop = True)
df_avg = pd.DataFrame(df.groupby(by = ['ColumnA'])['ColumnB'].mean())
df_avg = df_avg.reset_index()
它必须围绕相同的线条,但无法弄清楚。

最佳答案

在您的解决方案中创建 index按栏目 ColumnB避免在 stack 之后丢失列值和 Series.reset_index , 最后添加 as_index=False对于聚合后的列:

df = (df.set_index('ColumnB')['ColumnA']
.str.split(',', expand=True)
.stack()
.reset_index(name='ColumnA')
.groupby('ColumnA', as_index=False)['ColumnB']
.mean())
print (df)
ColumnA ColumnB
0 A 5.993500
1 B 4.195000
2 C 5.825667
3 D 6.135000
或使用 DataFrame.explode 的替代解决方案:
df = (df.assign(ColumnA = df['ColumnA'].str.split(','))
.explode('ColumnA')
.groupby('ColumnA', as_index=False)['ColumnB']
.mean())
print (df)
ColumnA ColumnB
0 A 5.993500
1 B 4.195000
2 C 5.825667
3 D 6.135000

关于 Pandas 在逗号分隔的列中找到平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63011947/

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