簡體   English   中英

通過比較多列組合pandas DataFrame中的行

[英]Combining rows in pandas DataFrame by comparing multiple columns

如何從以下 DataFrame 中獲得預期結果

 df
            col_1             col_2    col_3     col_4  
     0  Non-Saved    www.google.com     POST    20,567
     1               www.google.com     POST
     2             www.facebook.com      GET   
     3             www.facebook.com    OTHER
     4             www.linkedin.com      GET
     5      Saved     www.Quora.com     POST     6,337
     6                www.gmail.com     POST 
     7                www.gmail.com      GET

預期結果:

            col_1             col_2    col_3     col_4  
     0  Non-Saved    www.google.com     POST    20,567
                   www.facebook.com      GET   
                   www.linkedin.com    OTHER
     1      Saved     www.Quora.com     POST     6,337
                      www.gmail.com      GET

通過合並 col_1 和 col_3 中的空字符串,從 8 行到 2 行。 此外,將 col_2 和 col_3 中的不同值連接到一個單元格中。 任何人都可以幫助我使用用戶定義的函數來做到這一點嗎?

如果之前的解決方案有效,那么讓我們試試這個:

l = lambda x: ' , '.join(x.unique())

df = df.apply(lambda x: x.str.strip()).replace('',np.nan)

print(df.groupby(df.col_1.ffill())\
  .agg({'col_2': l,'col_3': l, 'col_4':'first'})\
  .reset_index())

輸出:

       col_1                                              col_2  \
0  Non-Saved  www.google.com , www.facebook.com , www.linked...   
1      Saved                      www.Quora.com , www.gmail.com   

                col_3   col_4  
0  POST , GET , OTHER  20,567  
1          POST , GET   6,337  

暫無
暫無

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

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