[英]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.