Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过比较多个列来组合DataFrame中的行_Python_Pandas_Dataframe - Fatal编程技术网

Python 通过比较多个列来组合DataFrame中的行

Python 通过比较多个列来组合DataFrame中的行,python,pandas,dataframe,Python,Pandas,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.fa

如何从以下数据帧中获得预期结果

 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行。此外,将列2和列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  

由于列2和列3都需要是唯一的值,所以对您的答案进行了轻微的编辑。请复习。谢谢@鲁尼,你明白了。只是修改了输出以匹配您的解决方案。