Python 数据帧中某列上的.map出现NaN错误

Python 数据帧中某列上的.map出现NaN错误,python,pandas,Python,Pandas,我有一个我正在使用的数据框,它包含一个列,列中拼写了州名称,我正试图将其转换为两个字母的缩写形式。我找到了一个包含所有州名称的单独cvs文件,并将其转换为字典。然后,我尝试使用该字典映射列,但我的输出列出现了一个错误 我拥有的原始数据框包含一列,其中城市和州分组在一起。我把它们分成了两个独立的栏目,而州就是我在玩的那个栏目 以下是我的数据帧在拆分后的样子: print(newtop50.head()) city_state 2018

我有一个我正在使用的数据框,它包含一个列,列中拼写了州名称,我正试图将其转换为两个字母的缩写形式。我找到了一个包含所有州名称的单独cvs文件,并将其转换为字典。然后,我尝试使用该字典映射列,但我的输出列出现了一个错误

我拥有的原始数据框包含一列,其中城市和州分组在一起。我把它们分成了两个独立的栏目,而州就是我在玩的那个栏目

以下是我的数据帧在拆分后的样子:

print(newtop50.head())
                    city_state     2018         city        state
11698       New York, New York  8398748     New York     New York
1443   Los Angeles, California  3990456  Los Angeles   California
3415         Chicago, Illinois  2705994      Chicago     Illinois
17040           Houston, Texas  2325502      Houston        Texas
665           Phoenix, Arizona  1660272      Phoenix      Arizona
这是我的字典中的几行内容:

print(states_dic)
{'Alabama': 'AL', 'Alaska': 'AK', 'Arizona': 'AZ', 'Arkansas': 'AR', 'California': 'CA', 'Colorado': 'CO', 'Connecticut': 'CT', 'Delaware': 'DE', 'District of Columbia': 'DC', 'Florida': 'FL', 'Georgia': 'GA', 'Hawaii': 'HI', 'Idaho': 'ID'
以下是我尝试过的:

newtop50['state'] = newtop50['state'].map(states_dic)

print(newtop50.head())
                    city_state     2018         city state
11698       New York, New York  8398748     New York   NaN
1443   Los Angeles, California  3990456  Los Angeles   NaN
3415         Chicago, Illinois  2705994      Chicago   NaN
17040           Houston, Texas  2325502      Houston   NaN
665           Phoenix, Arizona  1660272      Phoenix   NaN

不太确定我在这里遗漏了什么?

您已经解释过,您已经将
城市州
列拆分为
城市
。要使
map
起作用,该值必须完全匹配。我推测在state序列的两边都有
空格

试着做

newtop50['state'].str.strip().map(states_dic)

如果您不想手动创建映射(因为示例中缺少值),可以使用模块:



状态列的数据类型是什么?状态列的数据类型是object。@Lee Ok。检查我的答案。
import us
states_dic=us.states.mapping('name', 'abbr')
df.state.map(states_dic)

11698    NY
1443     CA
3415     IL
17040    TX
665      AZ