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’”。
有人有更简单的方法来做到这一点的想法吗?
您不想在 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)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |