簡體   English   中英

如何根據 Pandas 數據框中的列值(int)合並行(帶字符串)?

[英]How to merge rows (with strings) based on column value (int) in Pandas dataframe?

我有格式的數據集

df1=
 userid movieid    tags                     timestamp

    73  130682  b movie                     1432523704  
    73  130682  comedy                      1432523704  
    73  130682  horror                      1432523704  
    77  1199    Trilogy of the Imagination  1163220043  
    77  2968    Gilliam                     1163220138  
    77  2968    Trilogy of the Imagination  1163220039  
    77  4467    Trilogy of the Imagination  1163220065  
    77  4911    Gilliam                     1163220167  
    77  5909    Takashi Miike               1163219591

我想要另一個數據框的格式

df2=

userid    tags
73       b movie[1] comedy[1] horror[1]
77       Trilogy of the Imagination[3] Gilliam[1] Takashi Miike[1] 

這樣我就可以將所有標簽合並在一起以獲得字/秒計數或詞頻。 在排序中,我希望一個用戶 ID 的所有標簽都用“”(一個空格)連接在一起,這樣我還可以計算 word/s 的出現次數。 我無法將標簽中的字符串連接在一起。 我可以計算單詞及其出現次數。 任何幫助/建議將不勝感激。

首先計數並重新格式化每組計數的結果。 將其保留為中間結果:

r = df.groupby('userid').apply(lambda g: g.tags.value_counts()).reset_index(level=-1)
r
Out[46]: 
                           level_1  tags
userid                                  
73                         b movie     1
73                          horror     1
73                          comedy     1
77      Trilogy of the Imagination     3
77                         Gilliam     2
77                   Takashi Miike     1

這個簡單的字符串操作將為您提供每行的結果:

r.level_1+'['+r.tags.astype(str)+']'
Out[49]: 
userid
73                       b movie[1]
73                        horror[1]
73                        comedy[1]
77    Trilogy of the Imagination[3]
77                       Gilliam[2]
77                 Takashi Miike[1]

使用 Python 的好處是能夠用它做這樣的事情:

(r.level_1+'['+r.tags.astype(str)+']').groupby(level=0).apply(' '.join)
Out[50]: 
userid
73                       b movie[1] horror[1] comedy[1]
77    Trilogy of the Imagination[3] Gilliam[2] Takas...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM