我希望在满足某些特定条件时将数据框中的列值更改为另一个名称。
我尝试在数据框上应用apply方法,但是没有用。
这是我拥有的数据集,我希望在某些情况下可以更改国家/地区列名称。例如,“大韩民国”应更改为“韩国”,在此列中我需要更改相似的名称。我尝试套用方法,但没有得到任何结果。任何建议都会对我有帮助。先感谢您。 **
df.head()
Country Energy_Supply Energy_Supply_per_Capita
0 Afghanistan 3.210000e 10.0
1 Albania 1.020000e 35.0
2 Algeria 1.959000e+09 51.0
3 American Samoa NaN NaN
答案 0 :(得分:1)
为什么更换无效?看来这是个好方法:
df.head()
Country Energy_Supply Energy_Supply_per_Capita
0 Republic of Korea 3.210000e 10.0
1 Albania 1.020000e 35.0
2 Algeria 1.959000e+09 51.0
3 American Samoa NaN NaN
df.replace({'Country': 'Republic of Korea'}, {'Country': 'South Korea'})
Country Energy_Supply Energy_Supply_per_Capita
0 South Korea 3.210000e 10.0
1 Albania 1.020000e 35.0
2 Algeria 1.959000e+09 51.0
3 American Samoa NaN NaN
您可以多次执行此操作。对于每次替换
答案 1 :(得分:1)
您可以将replace()用于感兴趣的列。
创建字典repl_dict = {"Republic of China": "China", "Republic of Moldova": "Moldova", "Republic of France": "France","Great Britain": "England"}
,然后通过is替换函数,有关更多详细信息和参数,请检查pandas.DataFrame.replace
此方法确实通过创建
dictionary
一次全部替换 所有感兴趣的名称,最终将使您的dataframe
column
基于此字典,无需运行 每个Country
单独。
import pandas as pd
my_dict = { 'Country' : ["Republic of China", "China", "England", "Republic of Moldova", "Republic of France","Great Britain", "England"],
'age' : [20,27, 35, 55, 18, 21, 35],
'designation': ["VP", "CEO", "CFO", "VP", "VP", "CEO", "MD"]}
dfnew = pd.DataFrame(my_dict)
print(dfnew)
Country age designation
0 Republic of China 20 VP
1 China 27 CEO
2 England 35 CFO
3 Republic of Moldova 55 VP
4 Republic of France 18 VP
5 Great Britain 21 CEO
6 England 35 MD
repl_dict = {"Republic of China": "China", "Republic of Moldova": "Moldova", "Republic of France": "France","Great Britain": "England"} dfnew['Country'] = dfnew['Country'].replace(repl_dict, regex=True) print() print('Final dataframe', dfnew)
Final dataframe
Country age designation
0 China 20 VP
1 China 27 CEO
2 England 35 CFO
3 Moldova 55 VP
4 France 18 VP
5 England 21 CEO
6 England 35 MD
答案 2 :(得分:0)
我认为您需要的是map函数:
directions.routes[0].legs[0].duration_in_traffic
上面的表达式从df ['Country']中获取一个元素,并将其称为x。如果x =='Republic of Korea',它会将'South Korea'放在一个新系列中的相同位置,否则它只是将x复制到新系列中。然后,将带有“韩国”的新系列分配回“国家/地区”列。
希望这会有所帮助