使用Python使用状态代码映射状态名

2024-09-30 01:28:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有2个csv文件。我正在执行的CSV文件有些值作为状态代码,有些值作为状态名称,我想用状态名称替换状态代码

CSV 1

state

Assam
Goa
06
Kerala
12

CSV 2

S.No  state_name  state_code

1      Karnataka     06
2      Mizoram       12
3      Meghalaya     15

CSV 1中需要的输出:

state
Assam
Goa
Karnataka
Kerala
Mizoram

到目前为止,我所尝试的:

df= pd.read_csv("csv1.csv")


data1 = pd.read_csv("csv1.csv")

for index, row in df.iterrows():
    for index_config, row_config in data1.iterrows():
        if row['state'] == row_config['']:
            df['state'] = row_config['State']

如何从CSV 2中映射状态名称,以代替CSV 1状态列中的状态代码值


Tags: 文件csv代码名称configdf状态row
2条回答

您可以使用@Quang Huang的注释,但在读取csv2时需要额外设置dtype={'state_code': str}。否则state_code将被解析为int,并且不会按预期进行映射(6vs06

df = pd.read_csv('csv1.csv')
data1 = pd.read_csv('csv2.csv', dtype={'state_code': str})

df['state'] = df['state'].replace(data1.set_index('state_code')['state_name'])
    state
0   Assam
1   Goa
2   Karnataka
3   Kerala
4   Mizoram

让我们首先创建一个映射dictionary,然后对第一个数据帧(df1)使用replace方法:

#df1 is for CSV1 and df2 is for CSV2 file
mapping = dict(zip(df2['state_code'], df2['state_name']))
#print(mapping)
#{'06': 'Karnataka', '12': 'Mizoram', '15': 'Meghalaya'}

df1['state'] = df1.state.replace(mapping)

输出:

    state
0   Assam
1   Goa
2   Karnataka
3   Kerala
4   Mizoram

相关问题 更多 >

    热门问题