如何用pandas中的其他列替换列值?[副本]

iaqfqrcu  于 2023-08-01  发布在  其他
关注(0)|答案(3)|浏览(92)

此问题已在此处有答案

Pandas Merging 101(8个回答)
14天前关闭
我有个简单的问题。我有两个dataframe:
df1 =
| 国家| countries |
| --| ------------ |
| 法属| France |
| 美国| United-States |
| 意大利| Italy |
另一个是:
df2=
| countries |
| ------------ |
| FR |
| FR |
| IT |
| US |
| US |
| US |
| IT |
我想在df 2中将国家列替换为df 1中的国家列。

wj8zmpe1

wj8zmpe11#

合并df1上的代码和df2上的countries,然后稍微重命名一下countries列。

df2 = df2.merge(df1, right_on = 'code', left_on = 'countries', suffixes = ('_old', ''))
df2 = df2[['countries']]

字符串

oogrdqng

oogrdqng2#

map使用df1dict形式的值:

>>> df2["countries"].map(df1.set_index("code").squeeze().to_dict())

0           France
1           France
2            Italy
3    United-States
4    United-States
5    United-States
6            Italy
Name: countries, dtype: object

字符串

7rfyedvj

7rfyedvj3#

您可以使用merge函数,然后重命名并删除额外的列。我添加了一些额外的行动与索引恢复后合并。

df1 = pd.DataFrame({
    "code": ["FR", "US", "IT"],
    "countries": ["France", "United-States", "Italy"]
})

df2 = pd.DataFrame({
    "countries": ['FR', 'FR', 'IT', 'US', 'US', 'US', 'IT'],
    "idx": range(7),
})

df2.reset_index(inplace=True)

df2 \
    .merge(df1, left_on="countries", right_on="code") \
    .rename({"countries_y": "countries"}, axis=1) \
    .set_index("index") \
    .drop(["code", "countries_x"], axis=1)

字符串
输出量:

countries
index               
0             France
1             France
2              Italy
6              Italy
3      United-States
4      United-States
5      United-States

相关问题