我有一个类似于
的Dataframe(table2)57 INVERNESS
361 INVERNESS
533 INVERNESS
535 INVERNESS KERRY DOWNS
758 INVERNESS GREEN
807 INVERNESS
970 INVERNESS POINT
971 INVERNESS
等等..
我需要使用Dict映射/替换名称(我在Excel表格中有) 当我将翻译表读入Pandas时,我得到一个看起来像
的DF NSUBDIVISION
SUBDIVISION
*HUFFMAN**8MILES NE OTHER
0 OTHER
00 OTHER
000 OTHER
INVERNESS POINT INVERNESS
等等...... 当我使用xlate = df.to_dict()将其转换为DICT时,我得到一个看起来像的字典(xlate):
{u'NSUBDIVISION': {u'*HUFFMAN**8MILES NE': u'OTHER',
u'0': u'OTHER',
u'00': u'OTHER',
u'000': u'OTHER',
u'0000': u'OTHER',
u'INVERNESS POINT': u'INVERNESS',
所以..on(我提到这个,因为我不确定该词典是否正确形成)
我想做点什么
table2['SUBDIVISION'].replace(to_replace=xlate,inplace=True)
我想在xlate表的第1列中查找值,将它们与table2 ['SUBDIVISION']匹配,如果找到,则将x2第2列中的值替换为SUBDIVISION的内容,如果不是单独留下(奖励......实际上)如果col 2是NAn,我也想不管它,例如上面发现INVERNESS POINT将被INVERNESS取代
目前我只得到TypeError:unhashable type:'dict'
答案 0 :(得分:3)
我认为你想创建一个dictionary from the Series(而不是DataFrame):
In [11]: translate_df['NSUBDIVISION'].to_dict()
Out[11]:
{'*HUFFMAN**8MILES NE': 'OTHER',
'0': 'OTHER',
'00': 'OTHER',
'000': 'OTHER',
'INVERNESS POINT': 'INVERNESS'}
并将其用于replace
列:
In [12]: df['SUBDIVISION'].replace(translate_df['NSUBDIVISION'].to_dict())
Out[12]:
0 INVERNESS
1 INVERNESS
2 INVERNESS
3 INVERNESS KERRY DOWNS
4 INVERNESS GREEN
5 INVERNESS
6 INVERNESS
7 INVERNESS
Name: SUBDIVISION, dtype: object