使用pandas.DataFrame.mode还有groupby

2024-05-14 13:12:32 发布

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

如何为每一组的大多数人建立一个新的专栏?在

示例数据帧

    who        state
0   peopleA     CA
1   peopleA     CA
2   peopleA     CA
3   peopleA     NJ
4   peopleB     FL
5   peopleB     FL
6   peopleB     CA

这不是正确的编码方式

^{pr2}$

我的预期产出

    who        new_column
0   peopleA      CA
1   peopleB      FL

额外问题: 有没有办法设置一个阈值来控制计数是否大于70%,然后视为多数,如果小于70%,则返回null


Tags: 数据示例newcolumncastatewho办法
2条回答

pandas.groupby没有{}。解决方法是here。基本上,在分组之后,可以对分组程序使用.apply(),并找到特定于该组的模式。在

df.groupby('who').state.apply(lambda x: x.mode()).reset_index(0)

输出:

^{pr2}$

我们可以按列who分组,然后在df groupby对象上应用mode函数,然后调用reset_index并传递paramdrop=True,这样就不会将多索引作为列添加回来

>>> df
       who state
0  peopleA    CA
1  peopleA    CA
2  peopleA    CA
3  peopleA    NJ
4  peopleB    FL
5  peopleB    FL
6  peopleB    CA
>>> 
>>> df.groupby('who').apply(pd.DataFrame.mode).reset_index(drop=True)
       who state
0  peopleA    CA
1  peopleB    FL
>>> 

相关问题 更多 >

    热门问题