首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将县名转换为fips代码?(将县名映射到fips)

如何将县名转换为fips代码?(将县名映射到fips)
EN

Stack Overflow用户
提问于 2018-09-19 01:15:27
回答 3查看 984关注 0票数 0

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

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

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

下面是一个示例,说明我拥有哪些数据(初始数据和中间数据)和我想要的数据(最终数据)。

代码语言:javascript
复制
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]
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-19 01:23:51

你可以使用“合并”。

代码语言:javascript
复制
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。

票数 2
EN

Stack Overflow用户

发布于 2018-09-19 01:21:16

有一种方法:

代码语言:javascript
复制
initial_df = pd.DataFrame(initial_df)

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

或者:

代码语言:javascript
复制
initial_df = pd.DataFrame(initial_df)

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

两者的结果都是:

代码语言:javascript
复制
>>> final_df
     county  values   fips
0    REAGAN     508  48383
1     UPTON     364  48461
2  HARDEMAN      26  47069
3     UPTON     870  48461
票数 1
EN

Stack Overflow用户

发布于 2018-09-19 01:37:01

您可以从intermediate_df中获取字典,并将其转换为以fips作为值的县名上键的字典。然后使用它来map initial_df中的county字段。

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52396612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档