繁体   English   中英

如何使用 pandas 连接数据帧中部分顺序出现的行

[英]How to concatenate partially sequential occurring rows in data frame using pandas

我有一个 csv 如下。 分为多行。

如下

Names,text,conv_id
tim,hi,1234
jon,hello,1234
jon,how,1234
jon,are you,1234
tim,hey,1234
tim,i am good,1234
pam, me too,1234
jon,great,1234
jon,hows life,1234

所以我想将顺序出现的元素连接成一行,如下所示,使其更有意义

预期 output:

Names,text,conv_id
tim,hi,1234
jon,hello how are you,1234
tim,hey i am good,1234
pam, me too,1234
jon,great hows life,1234

我尝试了几件事,但我失败了,不能做任何人都可以指导我如何做到这一点?

提前致谢。

您可以使用Series.shift + Series.cumsum通过groupby创建适当的组,然后使用groupby.applyjoin应用于每个组。 'conv_id' ,一个'Names'被添加到组中,以便可以使用Series.reset_index检索它们。 最后, DataFrame.reindex用于按初始顺序放置列

groups=df['Names'].rename('groups').ne(df['Names'].shift()).cumsum()
new_df=( df.groupby([groups,'conv_id','Names'])['text']
        .apply(lambda x: ','.join(x))
        .reset_index(level=['Names','conv_id'])
        .reindex(columns=df.columns) )

print(new_df)

  Names               text  conv_id
1   tim                 hi     1234
2   jon  hello,how,are you     1234
3   tim      hey,i am good     1234
4   pam             me too     1234
5   jon    great,hows life     1234

细节:

print(groups)

0    1
1    2
2    2
3    2
4    3
5    3
6    4
7    5
8    5
dtype: int64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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