根据列值对有序熊猫数据框中的行进行分组

伊木

我有一个问题,关于仅将某些行分组在pandas数据框中(按时间戳排序),具体取决于它们的列值。

所以这是一个例子:

df=pd.DataFrame({"text":["Hello.",
                    "I had a question.", 
                    "Hi!",
                    "Yes how can I help?",
                    "Do you ship to the UK?"
                    ],
            "timestamp":[
                        pd.Timestamp('20131213 11:50:00'),
                        pd.Timestamp('20131213 11:51:00'),
                        pd.Timestamp('20131213 11:52:00'),
                        pd.Timestamp('20131213 11:53:00'),
                        pd.Timestamp('20131213 11:54:00')
                        ],
            "direction":["In","In","Out","Out","In"]})

数据框如下所示:

在此处输入图片说明

此数据帧按时间戳排序,并且可以是(例如)聊天线程,其中“进入”方向可以是一个人在说话,而“出去”是另一个人在说话。

我想得到的是这样的: 在此处输入图片说明

在最后一个数据帧中,如果行的方向相同,则将行的文本分组为一行,但是直到到达具有不同方向的行时,行才被分组为一行。并且消息的顺序被保留。

有人有什么想法吗?

凯特莉

怎么做这样的事情:

# indicate direction changes
df['dir'] = df.direction.shift(1).bfill()
df['dir_change'] = df.apply(lambda x: 1 if x.direction != x.dir else 0, axis=1)

# create new groups
df['new_group'] = df.dir_change.cumsum()

# group on new groups and aggregate the text
agg_df = df.groupby('new_group').agg({'text':lambda x: ' '.join(list(x)), 'timestamp':'first'})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按列值对熊猫数据框的行进行分组?

根据日期列对数据框中的行进行分组

根据列对数据框中的多行进行分组

如何根据行中的特定值和熊猫中的另一列对行进行分组?

根据字符串值列对熊猫数据框行进行排序

数据框根据条件对行进行分组

Pandas - 在数据框中对具有相同值的行进行分组

根据列总和值对行进行分组

对列中的值进行排序并绘制有序值

根据熊猫数据框中的其他索引值对索引值进行分组

在熊猫数据框中对行进行排序并获取列ID

熊猫:根据列的值对行进行排序

通过将值分配为pandas数据框中的列来对数据框中的行进行分组

根据特定列中的值对数据框行进行排序

如何根据列中的值对数据框的行进行重新排序

如何根据两列对熊猫数据框进行分组?

沿熊猫数据框中的行进行更有效的列填充

SQL 对列中具有相同数据的行进行分组

根据条件对熊猫数据框进行分组?

根据值中的条件将(有序)字典的值分组

如何对熊猫数据框的连续行进行分组

熊猫根据特定的列值将数据框中的行分组

根据一列对数据进行分组,然后使用数据框中的值构建行

如果没有某些特定值,则对数据框列中的行进行计数

如何使用R根据数据框中单个列的最小值对特定列中的行进行子集

大熊猫:对分组数据框中的行进行排序和删除

根据熊猫中的多个条件对行进行分组和过滤

根据给定条件对熊猫中的行进行分组

熊猫-数据框具有带有列表的列。如何对列表中的元素进行分组?