python - Pandas Dataframe Groupby 加入字符串,同时保留字符串的顺序
问题描述
已经提出了类似的问题,即使用 Pandas groupby 连接多行中的字符串并从逗号分隔的单元格中删除重复项
我想在 pandas groupby lambda 函数中连接字符串值,但是在保持字符串顺序的同时,解决方案使用在set
传入多个值时不保留顺序的函数。
df = df.sort_values(
['id', 'order_column']
).groupby('id').agg(
{
'channel': lambda x: ' > '.join(set(x)),
'value': np.sum
}
)
如何在保持传递给序列的值顺序的同时做到这一点?在我的例子中,数据是
1 Email
2 Affiliate
3 Organic Search
4 Email
5 Branded Social
6 Direct
7 Branded Social
8 Direct
9 Branded Social
10 Email
11 Affiliate
12 Email
13 Direct
14 Email
15 Direct
16 Email
17 Branded Social
18 Direct
19 Branded Social
我得到什么:'Affiliate > Email > Organic Search > Branded Social > Direct'
我的期望'Email > Affiliate > Organic Search > Branded Social > Direct'
解决方案
在and中使用sort=False
参数:groupby
drop_duplicates
set
df = df.sort_values(
['id', 'order_column']
).groupby('id', sort=False).agg(
{
'channel': lambda x: ' > '.join(x.drop_duplicates()),
'value': np.sum
}
)
推荐阅读
- python - PyGame Zero 中的重复键检测
- c# - Autofac 注册所有名为 IFoo.Name 的 IFoo 类型
- excel - excel vba导出表上的类型不匹配到pdf
- php - Laravel - Swift_RfcComplianceException 仅在登台服务器 .env 文件问题上
- c# - 无法使用 jquery 从控制器获取数据
- python-3.x - 如何根据张量流中的条件获得最小的张量值
- python - 如何检查id是否存在于json中
- node.js - 无法通过 node-fetch 获取 Steam API 用户配置文件数据
- oracle - Oracle - 清理 LOB 文件 - 恢复磁盘空间
- django - 有没有办法将模型属性传递给另一个属性?