[英]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.apply
将join
应用于每个组。 '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.