【问题标题】:How do I convert county names to fips codes? (map county names to their fips)如何将县名转换为 fips 代码? (将县名映射到他们的 fips)
【发布时间】:2019-02-23 01:58:49
【问题描述】:

我有一张表,其中一列是县名,另一列是各种属性。

我想将这列县名转换为 fips 代码。

我有一个显示每个县的 fips 代码的中间表。

这是我拥有的数据(初始数据和中间数据)和我想要的数据(最终数据)的示例。

initial_df = {
    'county': ['REAGAN', 'UPTON', 'HARDEMAN', 'UPTON'], 
    'values': [508, 364, 26, 870]
}
intermediate_df = {
    'county': ['REAGAN', 'HARDEMAN', 'UPTON'], 
    'fips': [48383, 47069, 48461]
}
final_df = {
    'county': ['REAGAN', 'UPTON', 'HARDEMAN', 'UPTON'], 
    'fips': [48383, 48461, 47069, 48461], 
    'values': [508, 364, 26, 870]
}

【问题讨论】:

    标签: python python-3.x pandas dataframe mapping


    【解决方案1】:

    这是一种方法:

    initial_df = pd.DataFrame(initial_df)
    
    final_df = initial_df.assign(fips = initial_df['county'].map(dict(zip(*intermediate_df.values()))))
    

    或者:

    initial_df = pd.DataFrame(initial_df)
    
    final_df = initial_df.assign(fips = initial_df['county'].map(pd.DataFrame(intermediate_df).set_index('county')['fips']))
    

    两者都导致:

    >>> final_df
         county  values   fips
    0    REAGAN     508  48383
    1     UPTON     364  48461
    2  HARDEMAN      26  47069
    3     UPTON     870  48461
    

    【讨论】:

      【解决方案2】:

      您可以使用“合并”。

      import pandas as pd
      initial_df = {'county': ['REAGAN', 'UPTON', 'HARDEMAN', 'UPTON'], 'values': [508, 
      364, 26, 870]}
      intermediate_df = {'county': ['REAGAN', 'HARDEMAN', 'UPTON'], 'fips': [48383, 47069, 
      48461]}
      final_df = {'county': ['REAGAN', 'UPTON', 'HARDEMAN', 'UPTON'], 'fips': [48383, 
      48461, 47069, 48461], 'values': [508, 364, 26, 870]}
      df1=pd.DataFrame(initial_df)
      df2=pd.DataFrame(intermediate_df)
      df3=df1.merge(df2)
      print(df3)
      

      输出就是你的 final_df。

      【讨论】:

        【解决方案3】:

        您可以从intermediate_df 获取字典并将其转换为以县名称为键的字典,并以fips 作为值。然后将其用于mapcountyinitial_df 中的字段。

        mapping = {k: v for k, v in zip(*intermediate_df.values())}
        
        df_final = pd.DataFrame(initial_df)
        df_final['fips'] = df_final['county'].map(mapping)
        >>> df_final
             county  values   fips
        0    REAGAN     508  48383
        1     UPTON     364  48461
        2  HARDEMAN      26  47069
        3     UPTON     870  48461
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多