我无法将列值替换为dict

时间:2019-03-23 19:54:21

标签: python pandas

我试图用字典值替换列值,但是出现以下错误: ValueError:列的长度必须与键的长度相同。

这是我下面的程序:

st_name = {'01' : 'AL','02':'AK', '04': 'AZ','05': 'AR','06': 'CA','08': 'CO','09': 'CT',
      '10': 'DE','11': 'DC','12': 'FL','13': 'GA','15': 'HI','16': 'ID','17': 'IL', '18': 'IN', 
      '19': 'IA' ,'20': 'KS','21': 'KY','22':'LA','23': 'ME','24':'MD','25': 'MA','26': 'MI','73': 'MI', '27': 'MN',
      '28': 'MS','29': 'MO', '30': 'MT', '31': 'NE', '32': 'NV', '33': 'NH','34': 'NJ','35': 'NM', 
      '36': 'NY', '37': 'NC','38': 'ND', '39': 'OH','74': 'OH', '40': 'OK', '41': 'OR','42': 'PA', '44': 'RI', 
      '45': 'SC', '46': 'SD', '47': 'TN', '48': 'TX', '49': 'UT','75': 'UT', '50': 'VT', '51': 'VA', '53': 'WA',
      '54': 'WV', '55': 'WI', '56': 'WY','76': 'WY', '60': 'AS', '66':'GU', '72': 'PR', '78': 'VI'}
df['state_code'] = df['state_code'].astype(str).str.zfill(2)
df[['stateabr']] = df.replace({'state_code' : st_name})

有没有办法解决长度问题?

1 个答案:

答案 0 :(得分:1)

使用pandas.Series.map

# Example dataframe
print(df)
  state_code
0         01
1         02
2         03
3         04

st_name = {'01' : 'AL','02':'AK', '04': 'AZ'}
df['stateabr'] = df.state_code.map(st_name)

print(df)
  state_code stateabr
0         01       AL
1         02       AK
2         03      NaN
3         04       AZ