如何查找分组数据帧的不同列中不同值在一列中最常见的出现?

jul*_*000 0 python group-by dataframe pandas

我想这个问题不太清楚,所以这里有一个例子:给定一个数据框:

公司名称 公司规模 公司活动
7点11分 5 餐厅
7点11分 5 超级市场
7点11分 10 超级市场
高盛 100 银行
高盛 200 餐厅
高盛 200 银行

我想按公司名称对数据框进行分组,然后将organization_size和organization_acitivity列中的值替换为相应公司和列中出现次数最多的值。

所以最终数据框应该是这样的:

公司名称 公司规模 公司活动
7点11分 5 超级市场
高盛 200 银行

我试过这个:

df.groupby("organization_name",group_keys=True)["organization_activity"].apply(lambda x: x.mode())
Run Code Online (Sandbox Code Playgroud)

但它只给了我

“AttributeError:‘SeriesGroupBy’对象没有属性‘mode’”。

有人有更简单的方法来做到这一点的想法吗?

Rab*_*zel 5

您不想在 groupby 之后选择一列,因为您希望将其应用于所有可用列。

尝试这个:

df.groupby('company_name').apply(lambda x: x.mode()).reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

输出:

    company_name  company_size company_acitivity
0       7 eleven             5       supermarket
1  goldman sachs           200              bank
Run Code Online (Sandbox Code Playgroud)