[英]Missing columns when trying to groupby aggregate multiple rows in pandas
我有一个包含相关信息的数据框,我想对一列(例如id)进行分组,而其他具有相同ID的列以“ |”连接。 但是,当我运行代码时,大多数列最终都会丢失(仅出现前三列),而且我不知道出了什么问题。
我的代码是:
df = df.groupby('id').agg(lambda col: '|'.join(set(col))).reset_index()
例如,我的数据开始像
id words ... (other columns here)
0 a asd
1 a rtr
2 b s
3 c rrtttt
4 c dsfd
而且我要
id ... (other columns here)
a asd|rtr
b s
c rrtttt|dsfd
而且我其余所有专栏的分组也类似。 现在,我其余的列只是没有出现在我的输出数据集中。 不知道出了什么问题。 谢谢!
预先转换为字符串,然后可以通过使用agg(set)
和applymap
来避免使用lambda:
df.astype(str).groupby('id').agg(set).applymap('|'.join)
最小的可验证示例
df = pd.DataFrame({
'id': ['a', 'a', 'b', 'c', 'c'],
'numbers': [1, 2, 2, 3, 3],
'words': ['asd', 'rtr', 's', 'rrtttt', 'dsfd']})
df
id numbers words
0 a 1 asd
1 a 2 rtr
2 b 2 s
3 c 3 rrtttt
4 c 3 dsfd
df.astype(str).groupby('id').agg(set).applymap('|'.join)
numbers words
id
a 1|2 asd|rtr
b 2 s
c 3 rrtttt|dsfd
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.