我有一个问题,即根据它们的列值,将 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"]})
这是数据框的样子:
此数据帧按时间戳排序,可以是(例如)聊天线程,其中方向“In”可能是一个人在说话,“Out”是另一个人在说话。
在最终的数据框中,如果行的文本方向相同,则这些行的文本被组合到一行中,但行只会组合在一起,直到您到达具有不同方向的行。 并且保留消息的顺序。
有没有人有什么想法?
最佳答案
设置
operations = {
'text': ' '.join,
'direction': 'first',
}
使用 agg
和按连续值分组的常用技巧:
df.groupby(df.direction.ne(df.direction.shift()).cumsum()).agg(operations)
text direction
direction
1 Hello. I had a question. In
2 Hi! Yes how can I help? Out
3 Do you ship to the UK? In
关于python - 根据列值对有序 Pandas 数据框中的行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52783162/