首页 > 解决方案 > 使用条件更改数据框的列值

问题描述

在adult_quasiIdentifer 数据框中,有一个名为nativeCountry 的列。我正在尝试修改 nativeCountry 以使其包含大陆,而不是国家/地区名称。

成人准标识符数据集

这是我的代码:

North_America = ['United-States', 'Cuba', 'Jamaic', 'Mexico', 'Puerto-Rico', 'Honduras','Canada','Haiti', 'Dominican-Republic', 'El-Salvador', 'Guatemala','Nicaragua' ]
South_America = ['Columbia','Ecuador', 'Peru','Trinadad&Tobago']
Asia = ['India', 'Iran','Philippines', 'Cambodia', 'Thailand','Laos', 'Taiwan', 'China', 'Japan', 'Vietnam','Hong']
Europe = ['England','Germany', 'Italy','Poland', 'Portugal', 'France', 'Yugoslavia','Scotland', 'Greece', 'Ireland', 'Hungary','Holand-Netherlands']
contient = {'North_America': North_America,'South_America': South_America, 'Asia': Asia, 'Europe': Europe}
for key, val in contient.items():
    adult_quasiIdentifier.loc[adult_quasiIdentifier.nativeCountry.isin(val),"nativeCountry"] = key

adult_quasiIdentifier

quasiIdentifier 数据集没有被修改,我也收到消息说

信息

我不知道我的代码有什么问题。有什么办法可以修改 nativeCountry 列吗?谢谢!

标签: pythonpandasdataframenumpy

解决方案


如果您可以创建国家/地区字典,则最简单。在这种情况下,您可以这样做:

import pandas as pd

#dummy data creating
df = pd.DataFrame({
  'country': ['Cuba', 'Peru', 'India', 'Taiwan', 'England', 'Germany']
})

#country-continent dictionary
country_continent = {
  'Cuba': 'South_America',
  'Peru': 'South_America',
  'India': 'Asia',
  'Taiwan': 'Asia',
  'England': 'Europe',
  'Germany': 'Europe'
}

# then replace/change
df['country'] = df['country'].map(country_continent)

所以,从这个数据框中:

在此处输入图像描述

至:

在此处输入图像描述

而且,当我们这样做时,重命名该列可能会很好:

df.rename(columns={'country': 'continent'}, inplace=True)

推荐阅读