2017-10-11 90 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

@罗尼,你明白了。只需修改输出以匹配您的解决方案。 –