列中的每列聚合列

时间:2018-03-06 14:11:19

标签: python pandas

以下是pandas dataframe的示例:

top1_item top2_item top3_item
2         3         4
1         3         6
6         3         2

我想在数据框后附加一个包含其他列值的列表:

top1_item top2_item top3_item together
2         3         4         [2,3,4]
1         3         6         [1,3,6]
6         3         2         [6,3,2]

我试过像

这样的东西
df[['top1_item', 'top2_item', 'top3_item']].agg(list, axis=1)

但这不会返回所需的pandas系列列表,我可以很容易地将其添加到我的数据帧中。

2 个答案:

答案 0 :(得分:3)

或许,请改为列出一个列表。您也不需要使用agg

df['new'] = df.values.tolist()
df

   top1_item  top2_item  top3_item        new
0          2          3          4  [2, 3, 4]
1          1          3          6  [1, 3, 6]
2          6          3          2  [6, 3, 2]

如果它是您要聚合的列的子集,那很容易:

df['new'] = df['col1', 'col2', ...].values.tolist()

答案 1 :(得分:2)

嗯,(PS:我不知道为什么我们需要首先应用元组然后转换为列表..)

df['New']=df.apply(tuple,1).apply(list)
df
Out[11]: 
   top1_item  top2_item  top3_item        New
0          2          3          4  [2, 3, 4]
1          1          3          6  [1, 3, 6]
2          6          3          2  [6, 3, 2]