使用另一个数据帧更改数据帧中列中的值

2024-06-09 07:57:01 发布

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

我有两个数据帧:

第一个数据帧df包含以下数据:

df = pd.DataFrame({'Standort': ['Vereinigte Staaten', 'Australien', 'Belgien'],
                'value': [100, 300, 150]})

第二个dataframe Lookup_Country是一个查找表,用于将列'Standort'链接到列'Land',并将'Standort'的值替换为'Country'

Lookup_Country = pd.DataFrame({'Land': ['Vereinigte Staaten', 'Großbritannien (UK)', 'Belgien'],
                'Country': ['United States', 'United Kingdom', 'Belgium']})

如何使用dataframe Lookup_Country替换列'Standort'的值,以便获得第三个dataframe

df3= pd.DataFrame({'Standort': ['United States', 'Australien', 'Belgium'],
                'value': [100, 300, 150]})

Tags: 数据dataframedfvaluelookupcountryunitedpd
3条回答
>>> df.replace({"Standort": Lookup_Country.set_index("Land").squeeze().to_dict()})
        Standort  value
0  United States    100
1     Australien    300
2        Belgium    150

事实上,您不需要Lookup_Country是一个dataframe,一个简单的dict就足够了:

Lookup_Country = {'Vereinigte Staaten': 'United States',
                  'Großbritannien (UK)': 'United Kingdom',
                  'Belgien': 'Belgium'}

您可以使用pd.Series.map

df['Standort'] = df['Standort'].map(Lookup_Country.set_index('Land')['Country']).fillna(df['Standort'])

        Standort  value
0  United States    100
1     Australien    300
2        Belgium    150

这应该可以做到:

for i, cell_df in enumerate(df["Standort"]):
    for j, cell_lc in enumerate(Lookup_Country["Land"]):
        if cell_df == cell_lc:
            df.at[i, "Standort"] = Lookup_Country.at[j, "Country"]

相关问题 更多 >