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都需要是唯一的值,所以对您的答案进行了轻微的编辑。请复习。谢谢@鲁尼,你明白了。只是修改了输出以匹配您的解决方案。