簡體   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