gpt4 book ai didi

python - 对 pandas 数据框中的单元格值进行 groupby

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

我有一个数据框,其中包含 dx1-dx99 中的 99 列,其中一列作为 LOS。 dxi 列包含分类代码,并且没有任何顺序。代码可以出现在一行中的任何列中。代码可以在一列中重复,但不会在一行中重复:

dx1 dx2 dx3 .   dx99    los
E10 I12 0 N18 R18 12
E10 I12 I31 E44 N17 7
E10 I12 N17 T86 0 5
I12 E10 N18 A04 1
E10 I12 B10 N18 Z99 4
E10 N18 Z76 1
E10 N18 Z99 N25 E78 8

我想计算数据帧中每个代码的 LOS 平均值。我发现我可以在多个列上应用 groupby() 函数。但这并没有给我想要的结果。我需要这种格式的结果:

Codes    mean-LOS
E10 5.42
I12 7.6
N18 5.2
.
.
etc.

最佳答案

您可以使用DataFrame.melt使用groupby和聚合mean进行 reshape :

df = df.melt('los', value_name='Codes')
#older version of pandas < 0.20.0
#df = pd.melt(df, 'los', value_name='Codes')
df = df.groupby('Codes', as_index=False)['los'].mean()
print (df)
Codes los
0 0 8.500000
1 A04 1.000000
2 B10 4.000000
3 E10 5.428571
4 E44 7.000000
5 E78 8.000000
6 I12 5.800000
7 I31 7.000000
8 N17 6.000000
9 N18 5.200000
10 N25 8.000000
11 R18 12.000000
12 T86 5.000000
13 Z76 1.000000
14 Z99 6.000000

如果需要重命名列:

df = df.melt('los', value_name='Codes')
df = df.groupby('Codes')['los'].mean().reset_index(name='mean-LOS')
print (df)
Codes mean-LOS
0 0 8.500000
1 A04 1.000000
2 B10 4.000000
3 E10 5.428571
4 E44 7.000000
5 E78 8.000000
6 I12 5.800000
7 I31 7.000000
8 N17 6.000000
9 N18 5.200000
10 N25 8.000000
11 R18 12.000000
12 T86 5.000000
13 Z76 1.000000
14 Z99 6.000000

关于python - 对 pandas 数据框中的单元格值进行 groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44934459/

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