2

我有一个看起来像的 Dataframe(table2)

57                  INVERNESS
361                 INVERNESS
533                 INVERNESS
535     INVERNESS KERRY DOWNS
758           INVERNESS GREEN
807                 INVERNESS
970           INVERNESS POINT
971                 INVERNESS

等等..

而且我需要使用字典映射/替换名称(我在 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',

所以..on(我提到这一点是因为我不确定字典是否正确形成)

我想做类似的事情

 table2['SUBDIVISION'].replace(to_replace=xlate,inplace=True)

我想在 xlate 表的第 1 列中查找值,将它们与 table2['SUBDIVISION'] 匹配,如果找到,则将 SUBDIVISION 的内容替换为 xlate 第 2 列中的值,如果不单独放置它们(奖励..实际上如果 col 2是 NAn 我也想不理会它)例如上面找到 INVERNESS POINT 将被 INVERNESS 取代

目前我只是得到 TypeError: unhashable type: 'dict'

4

1 回答 1

4

我认为您想从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
于 2013-08-05T21:46:29.810 回答