pandas与多索引数据帧中最常见的值分离

2024-09-29 19:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个示例数据帧df

GridCode,User,DLang
3,224591119,es
3,224591119,ja
3,224591119,zh
4,224591119,es
6,146381773,en
9,17925282,ca

我想对User字段进行分组,只保留最频繁的DLang代码,然后取消堆叠并计算每个GridCodeUser的数量。到目前为止,我做到了:

^{pr2}$

正确返回:

DLang     ca  en  es  ja  zh
GridCode                    
3          0   0   1   1   1
4          0   0   1   0   0
6          0   1   0   0   0
9          1   0   0   0   0

但是,正如您在df中看到的,有些用户有多个DLang个条目(例如用户224591119),但我只想计算他们最频繁的DLang代码(例如,对于该用户,它是es)。产生的数据帧将是:

DLang     ca  en  es
GridCode                    
3          0   0   1
4          0   0   1
6          0   1   0
9          1   0   0

Tags: 数据代码用户示例df数量esca
1条回答
网友
1楼 · 发布于 2024-09-29 19:22:05

首先,计算一个特定的DLang发生的次数,在GridCode上取平均值。在

g = df.groupby(['User','DLang']).count().reset_index()
g = g.rename(columns={'GridCode':'occurrences'})

然后,使用first()函数来查找每个用户最频繁/最多出现的次数。在

^{pr2}$

将最频繁/最大出现次数的数据流与原始输入合并。这将删除用户使用DLang而不是最常用的DLang的行

^{3}$

最后,对所有用户进行平均,以获得最终计数。在

final_df = j.groupby(['GridCode','DLang']).size().unstack().fillna(0)

DLang     ca  en  es
GridCode            
3          0   0   1
4          0   0   1
6          0   1   0
9          1   0   0

相关问题 更多 >

    热门问题