我有一个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'}
我如何实现这一目标?提前谢谢。
答案 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'}