Pandas按ID合并Excel行:DataFrame同ID行合并问题求助
解决DataFrame按id合并重复行的问题
看你的需求是要把相同id的行合并成一行,而且从预期结果来看是保留第一行的post内容对吧?你之前试的groupby写法踩了个小坑,我来帮你修正下。
问题出在哪?
你之前用groupby(['id', 'post'])的话,因为两行的post内容不一样,会被当成两个独立分组,哪怕加了.first()也没法合并成一行——毕竟分组键里包含了不一样的post,自然分不到一组里。
正确的解决方法
方法1:保留每个id的第一行数据(匹配你的预期结果)
直接按id分组,然后取每组的第一行就好,记得加上as_index=False让id保持为普通列:
df = df.groupby('id', as_index=False).first()
执行后就会得到你想要的结果:相同id的行合并,保留第一行的post和date。
方法2:如果需要拼接同一id下的所有post内容(可选)
要是你其实想把两段post文本合并成一个,而不是只保留第一段,可以用agg方法来拼接:
df = df.groupby(['id', 'date'], as_index=False).agg({'post': ' '.join})
这样相同id和date下的post会被用空格连起来,适合需要整合文本内容的场景。
内容的提问来源于stack exchange,提问作者Chasen Bettinger
相关产品推荐
相关产品推荐

