我有一个看起来像这样的数据框(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 时,我得到一个如下所示的 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',
所以......(我提到这一点是因为我不确定字典是否正确形成)
我想做一些类似的事情
table2['SUBDIVISION'].replace(to_replace=xlate,inplace=True)
我想查找 xlate 表第一列中的值,将它们与 table2['SUBDIVISION'] 匹配,如果找到,则将 SUBDIVISION 的内容替换为 xlate 第 2 列中的值(如果不保留它们)(奖励..实际上如果第 2 列是 NAn,我也想不理会它)例如上面找到的 INVERNESS POINT 将被 INVERNESS 替换
目前我刚刚得到 TypeError: unhashable type: 'dict'
最佳答案
我想你想创建一个 dictionary from the Series (而不是数据框):
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
关于python - 使用 Python 字典替换/清理 Pandas DataFrame 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18067982/