我正在尝试将数据帧的多行合并为一行,将具有不同值的列合并到列表中。有多个具有不同值的列。
如果只需要对列表创建1列(在这种情况下为'b'),则df.groupby('a')['b'].apply(list)
效果很好,但我不知道如何对多列进行操作。
数据框:
a b c d
0 1 b 1 first
1 1 b 2 second
2 2 c 1 third
3 2 c 2 fourth
4 2 c 3 fifth
首选数据帧后操作:
a b c d
0 1 b [1, 2] [first, second]
1 2 c [1, 2, 3] [third, fourth, fifth]
有一种简单的方法吗?
答案 0 :(得分:0)
df = df.groupby(['a','b']).apply(lambda x: [list(x['c']), list(x['d'])]).apply(pd.Series)
df.columns =['a','b','c','d']
输出
a b c d
0 1 b [1, 2] [first, second]
1 2 c [1, 2, 3] [third, fourth, fifth]