【发布时间】:2017-04-23 08:40:28
【问题描述】:
我正在使用 Python3 和 pandas 版本“0.19.2”。
我有一个 pandas df 如下:
chat_id line
1 'Hi.'
1 'Hi, how are you?.'
1 'I'm well, thanks.'
2 'Is it going to rain?.'
2 'No, I don't think so.'
我想按 'chat_id' 分组,然后在 'line' 上做类似滚动求和的操作以获得以下结果:
chat_id line conversation
1 'Hi.' 'Hi.'
1 'Hi, how are you?.' 'Hi. Hi, how are you?.'
1 'I'm well, thanks.' 'Hi. Hi, how are you?. I'm well, thanks.'
2 'Is it going to rain?.' 'Is it going to rain?.'
2 'No, I don't think so.' 'Is it going to rain?. No, I don't think so.'
我相信 df.groupby('chat_id')['line'].cumsum() 只适用于数字列。
我也尝试过 df.groupby(by=['chat_id'], as_index=False)['line'].apply(list) 来获取完整对话中所有行的列表,但是我可以'不知道如何解压该列表以创建“滚动总和”风格的对话列。
【问题讨论】:
-
有趣。
cumsum在 Series 上调用时有效,但在 groupby 对象上调用时会引发错误。
标签: pandas text rolling-sum