pandas与isin的unicode问题

时间:2014-10-27 23:32:15

标签: python unicode pandas

我有以下数据框:

      CONV_FIELD
0      u'Ignore'
1      u'Ignore'
2      u'Ignore'
3      u'Ignore'
4      u'Ignore'
5      u'Ignore'
6      u'Ignore'
7      u'Ignore'
8      u'Ignore'
9      u'Ignore'
10     u'Ignore'
11     u'Ignore'
12     u'Ignore'
13     u'Ignore'
14     u'Ignore'
15     u'Ignore'
16     u'Ignore'
17      u'Other'

我想排除所有'忽略'从数据框中,我这样做:

df[~df.CONV_FIELD.isin([u'Ignore'])]

但是,也许因为所有CONV_FIELD列值似乎都是unicode,所以此语句不执行任何操作。我该如何解决这个问题?

P.S。还有其他列,数据框比显示的要大很多。

1 个答案:

答案 0 :(得分:3)

打印数据帧时u'...'实际显示有点奇怪。这让我怀疑你有字符串包含u'Ignore'。如果我评估这些字符串,我打印时只会得到Ignore

import ast
df['conv_field_fixed'] = df.CONV_FIELD.map(ast.literal_eval)
df
Out[13]: 
   CONV_FIELD conv_field_fixed
0   u'Ignore'           Ignore
1   u'Ignore'           Ignore
2   u'Ignore'           Ignore
3   u'Ignore'           Ignore
4   u'Ignore'           Ignore
5   u'Ignore'           Ignore
6   u'Ignore'           Ignore
7   u'Ignore'           Ignore
8   u'Ignore'           Ignore
9   u'Ignore'           Ignore
10  u'Ignore'           Ignore
11  u'Ignore'           Ignore
12  u'Ignore'           Ignore
13  u'Ignore'           Ignore
14  u'Ignore'           Ignore
15  u'Ignore'           Ignore
16  u'Ignore'           Ignore
17   u'Other'            Other

# If we look at the first item we see it is
# still a unicode string:
df.conv_field_fixed.iloc[0]
Out[15]: u'Ignore'

现在子集化操作有效:

df[~df.conv_field_fixed.isin([u'Ignore'])]
Out[14]: 
   CONV_FIELD conv_field_fixed
17   u'Other'            Other