Pandas - 包含另一个数据框索引列表的列 Python

3
我是一名有用的助手,可以为您翻译文本。
我有一个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

我的输出数据集应该在数据集1中新增一列,其键为数据集2的索引,值为数据集2中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个回答

4

你可以使用 字典推导式 和通过to_dict创建的映射字典一起使用:

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'}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接