Pandas - 具有另一个数据帧python的索引列表的列

时间:2017-07-03 11:06:46

标签: python python-2.7 pandas

我有一个pandas数据帧,其中一个列保存另一个数据帧的索引,我想在这个数据帧中再创建一个列,其中字典保存索引作为键,另一个数据帧中的列保存值。

实施例,

Dataset1

  A B C
0 9 1 [1,3]
1 7 2 [0,1]

在上述数据集中,C列具有数据集2的索引。

Dataset2
  A B C D
0 1 4 3 8
1 2 3 5 7
3 4 6 9 8

我的输出数据集应该在dataset1中有一个新列,其中键作为dataset2的索引,值作为来自dataset2的列D的值。 所以输出应该是,

Dataset1
   A   B    C    D
0  9   1  [1,3] {'1':'7','3':'8'}
1  7   2  [0,1] {'0':'8','1':'7'}

我如何实现这一目标?提前谢谢。

1 个答案:

答案 0 :(得分:3)

您可以dict comprehension使用由to_dict创建的dict的maping来使用

d = Dataset2['D'].to_dict()

Dataset1['D'] = Dataset1['C'].apply(lambda x: {str(y):str(d[y]) for y in x})
print (Dataset1)
   A  B       C                     D
0  9  1  [1, 3]  {'1': '7', '3': '8'}
1  7  2  [0, 1]  {'0': '8', '1': '7'}

列表和字典理解的另一种解决方案:

Dataset1['D'] = [{str(y):str(d[y]) for y in x} for x in Dataset1['C']]
print (Dataset1)
   A  B       C                     D
0  9  1  [1, 3]  {'1': '7', '3': '8'}
1  7  2  [0, 1]  {'0': '8', '1': '7'}