如何根据某些条件更改熊猫中的列值

时间:2019-07-21 15:20:04

标签: python pandas

我希望在满足某些特定条件时将数据框中的列值更改为另一个名称。

我尝试在数据框上应用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 

3 个答案:

答案 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复制到新系列中。然后,将带有“韩国”的新系列分配回“国家/地区”列。

希望这会有所帮助