大熊猫:在数据集中填充柱,用基于在两个数据集匹配的列从另一数据集的数据

时间:2019-02-02 20:10:08

标签: python pandas

我有麻烦试图找出这个问题。

我有两个数据集,dataset_1和dataset_2。我正在尝试通过匹配数据集_1和数据集_2中的“ id”在数据集_1中创建一个名为“名称”的新列。本质上映射的名称及其相应的标识。

每个数据帧中还有大约10个其他列,但对于此问题不是必需的。

在数据集的柱的实例:

Dataset_1:

id: 
1234
3267
12
1234
15

数据集_2:

id:         name:
12          jimbo
899         jim
3267        jimmy
1234        jimbob
899         jim

结果数据框:

Dataset_1:

id:        name:
1234       jimbob
3267       jimmy 
12         jimbo
1234       jimbo
15         jahad

(假设名称15 - “jahad” 是Dataset_2进一步向下)

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以根据df2中的两列创建一个字典,并使用mapdf1中的值:

print(df1)
    id
0  1234
1  3267
2    12
3  1234
4    15

print(df2)
     id    name
0    12   jimbo
1   899     jim
2  3267   jimmy
3  1234  jimbob
4   899     jim

mapper = dict(zip(df2.id, df2.name))
# {12: 'jimbo', 899: 'jim', 3267: 'jimmy', 1234: 'jimbob'}

df1.loc[:,'name'] = df1.id.map(mapper)

    id    name
0  1234  jimbob
1  3267   jimmy
2    12   jimbo
3  1234  jimbob
4    15     NaN

答案 1 :(得分:0)

您可以在一行代码中执行左连接(pd.merge):

import pandas as pd

df1 = pd.DataFrame({'id': [1234, 3267, 12, 1234, 15]})
df2 = pd.DataFrame({
    'id': [12, 899, 3267, 1234, 899, 15],
    'name': ['jimbo', 'jim', 'jimmy', 'jimbob', 'jim', 'jahad']
})

df = df1.merge(df2, on='id', how='left')

print(df)

结果: enter image description here