我使用pandas版本'0.12.0'。我有一个数据框如下。 id
系列的dtype最初是浮点数,但我被告知它也可以包含字符串,所以我的代码需要满足这种可能性。所以id
的当前dtype是对象。
df = pd.DataFrame({'id' : [123,512,'zhub1', 12354.3, 129, 753, 295, 610],
'colour': ['black', 'white','white','white',
'black', 'black', 'white', 'white'],
'shape': ['round', 'triangular', 'triangular','triangular','square',
'triangular','round','triangular']
}, columns= ['id','colour', 'shape'])
df.dtypes
->id object
->colour object
->shape object
->dtype: object
但是,使用id
的内容检查id
中的值或使'等于'条件不起作用:
'zhub1' in df.id
->False
123 in df.id
->False
df.ix[df.id=='zhub1']
->Empty DataFrame
->Columns: [id, colour, shape]
->Index: []
我还尝试将id
的dtype转换为str
,但它没有帮助:
df.id = df.id.astype(str)
我不知道在这一点上我应该如何对待id
,因为我不明白object
dtype在这种情况下的行为。有任何想法吗?
答案 0 :(得分:1)
这样做:
In [41]:
df[df.id.isin(['zhub1'])]
Out[41]:
id colour shape
2 zhub1 white triangular
[1 rows x 3 columns]
或更好:
In [42]:
df[df.id == 'zhub1']
Out[42]:
id colour shape
2 zhub1 white triangular
[1 rows x 3 columns]
整数比较也有效:
In [43]:
df[df.id == 123]
Out[43]:
id colour shape
0 123 black round
[1 rows x 3 columns]