2017-10-11 143 views
1

結合在大熊貓數據幀行如何從下面的數據框達到了預期的結果通過比較多個列

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 

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

回答

1

如果以前solution worked,那麼讓我們來試試這個:

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 
+1

略作修改您的答案COL_2併成爲唯一值col_3都需要的。請查閱。謝謝! –

+0

@羅尼,你明白了。只需修改輸出以匹配您的解決方案。 –