将一列的值设置为形状列表(1,2),其中两个嵌套列表中的每一个都是另一列的值

时间:2018-01-29 15:43:43

标签: python pandas

例如,我有一个包含A和B两列的DataFrame,每个列都包含一个数字。我现在想添加另一列C,它是一个嵌套列表,每个内部列表包含来自A和B的单个值。

           A      B                 C
index
    0    2.3    6.4    [[2.3], [6.4]] 
    1    5.6    2.8    [[5.6], [2.8]]
    2    8.2    9.0    [[8.2], [9.0]]

我试过了

df['C'] = [[x] for x in df[['A', 'B']].values.tolist()]

但这会导致

           A      B               C
index
    0    2.3    6.4    [[2.3, 6.4]] 
    1    5.6    2.8    [[5.6, 2.8]]
    2    8.2    9.0    [[8.2, 9.0]]

2 个答案:

答案 0 :(得分:3)

使用agg

df['C'] = df[['A','B']].agg(lambda x : ([x[0]],[x[1]]),1).apply(list)

   index    A    B               C
0      0  2.3  6.4  [[2.3], [6.4]]
1      1  5.6  2.8  [[5.6], [2.8]]
2      2  8.2  9.0  [[8.2], [9.0]]

如果你需要速度使用numpy的扩展暗淡,即

df['C'] = (df[['A','B']].values[:,:,None]).tolist()

df['C']
0    [[2.3], [6.4]]
1    [[5.6], [2.8]]
2    [[8.2], [9.0]]
Name: C, dtype: object

答案 1 :(得分:2)

df['C']=df[['A','B']].apply(lambda x : [[x[0]],[x[1]]],1).values.tolist()
df
Out[1051]: 
   A  B           C
0  1  4  [[1], [4]]
1  2  5  [[2], [5]]
2  3  6  [[3], [6]]