繁体   English   中英

如何根据 Pandas 中另一个 dataframe 的值更改 dataframe 的所有值?

[英]How to change all values of a dataframe according to values of another dataframe in Pandas?

ID 需要替换为规范名称。 第一个数据帧(请使用代码):

在此处输入图像描述

    df = pd.DataFrame({'LopCityCriteriaId': {0: 1007788.0,
      1: 1000002.0,
      2: 1000003.0,
      3: 1000003.0,
      4: 1000004.0},
     'LopCountryCriteriaId': {0: 2356.0,
      1: 1000003.0,
      2: 1000002.0,
      3: 1000009.0,
      4: 1000004.0},
     'LopMostSpecificTargetId': {0: 1007788.0,
      1: 1000003.0,
      2: 9062093.0,
      3: 1000002.0,
      4: 1000002.0},
     'LopRegionCriteriaId': {0: 20462.0,
      1: 1000009.0,
      2: 1000003.0,
      3: 1000008.0,
      4: 1000004.0}})

df

现在我需要将整个数据框中的所有这些 ID 替换为这些(请使用代码):

在此处输入图像描述

df_IDs = pd.DataFrame({'Criteria ID': {0: 1000002, 1: 1000003, 2: 1000004, 3: 1000008, 4: 1000009},
 'Canonical Name': {0: 'Kabul,Kabul,Afghanistan',
  1: 'Luanda,Luanda Province,Angola',
  2: 'The Valley,Anguilla',
  3: 'Philipsburg,Sint Maarten',
  4: 'Willemstad,Curacao'}})

df_IDs

请指出我正确的方向。

使用DataFrame.replace

df1 = df.replace(df_IDs.set_index('Criteria ID')['Canonical Name'])
print (df1)
               LopCityCriteriaId           LopCountryCriteriaId  \
0                      1007788.0                         2356.0   
1        Kabul,Kabul,Afghanistan  Luanda,Luanda Province,Angola   
2  Luanda,Luanda Province,Angola        Kabul,Kabul,Afghanistan   
3  Luanda,Luanda Province,Angola             Willemstad,Curacao   
4            The Valley,Anguilla            The Valley,Anguilla   

         LopMostSpecificTargetId            LopRegionCriteriaId  
0                      1007788.0                        20462.0  
1  Luanda,Luanda Province,Angola             Willemstad,Curacao  
2                      9062093.0  Luanda,Luanda Province,Angola  
3        Kabul,Kabul,Afghanistan       Philipsburg,Sint Maarten  
4        Kabul,Kabul,Afghanistan            The Valley,Anguilla  

Series.map

df2 = df.apply(lambda x: x.map(df_IDs.set_index('Criteria ID')['Canonical Name']))
print (df2)
               LopCityCriteriaId           LopCountryCriteriaId  \
0                            NaN                            NaN   
1        Kabul,Kabul,Afghanistan  Luanda,Luanda Province,Angola   
2  Luanda,Luanda Province,Angola        Kabul,Kabul,Afghanistan   
3  Luanda,Luanda Province,Angola             Willemstad,Curacao   
4            The Valley,Anguilla            The Valley,Anguilla   

         LopMostSpecificTargetId            LopRegionCriteriaId  
0                            NaN                            NaN  
1  Luanda,Luanda Province,Angola             Willemstad,Curacao  
2                            NaN  Luanda,Luanda Province,Angola  
3        Kabul,Kabul,Afghanistan       Philipsburg,Sint Maarten  
4        Kabul,Kabul,Afghanistan            The Valley,Anguilla  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM