我有以下数据框:
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。还有其他列,数据框比显示的要大很多。
答案 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