使用来自另一个数据帧的相应数据填充列值(合并??)

2024-06-02 06:29:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧。第一:

    country city
0   Norway    a
1   Norway    a
2   Norway    a
3   Norway    b
4   Norway    b
5   Norway    b
6   Sweden    c
7   Sweden    c
8   Sweden    c
9   Sweden    c
10  Sweden    d
11  Sweden    d
12  Sweden    d

第二:

  city  region
0    a       1
1    a       2
2    b       3
3    b       4
4    c       5
5    c       6
6    c       7
7    d       8

如何获取以下数据帧?我们只需要在第二个数据框中为相应的城市分配一个正确的国家,作为一个新列

  country city  region
0  Norway    a       1
1  Norway    a       2
2  Norway    b       3
3  Norway    b       4
4  Sweden    c       5
5  Sweden    c       6
6  Sweden    c       7
7  Sweden    d       8

我曾尝试使用合并和映射,但未能成功


Tags: 数据city国家countryregionnorwaysweden
3条回答

您可以合并两个数据帧,但首先需要在第一个数据帧中删除重复项:

pd.merge(df1.drop_duplicates(), df2)

输出:

  country city  region
0  Norway    a       1
1  Norway    a       2
2  Norway    b       3
3  Norway    b       4
4  Sweden    c       5
5  Sweden    c       6
6  Sweden    c       7
7  Sweden    d       8

您可以创建一个dictcity名称映射到country名称,然后将其用作pd.Series.map方法的映射:

df2['country'] = df2['city'].map(dict(zip(df1.city, df1.country)))

print(df2)

输出:

  city  region country
0    a       1  Norway
1    a       2  Norway
2    b       3  Norway
3    b       4  Norway
4    c       5  Sweden
5    c       6  Sweden
6    c       7  Sweden
7    d       8  Sweden

试试这个:

pd.merge(df1,df2, how='inner', left_on='city',right_on='city')

相关问题 更多 >