繁体   English   中英

尝试分组汇总熊猫中的多行时缺少列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM