Python 熊猫如何用';对象';数据类型

Python 熊猫如何用';对象';数据类型,python,pandas,Python,Pandas,我使用熊猫版本“0.12.0”。我有一个如下的数据帧。id系列的数据类型最初是float,但我被告知它也可以包含字符串,因此我的代码需要考虑这种可能性。因此,id的当前数据类型是object df = pd.DataFrame({'id' : [123,512,'zhub1', 12354.3, 129, 753, 295, 610], 'colour': ['black', 'white','white','white',

我使用熊猫版本“0.12.0”。我有一个如下的数据帧。
id
系列的数据类型最初是float,但我被告知它也可以包含字符串,因此我的代码需要考虑这种可能性。因此,
id
的当前数据类型是object

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
的数据类型转换为
str
,但没有帮助:

df.id = df.id.astype(str)
此时,我不知道应该如何处理
id
,因为我不理解
对象
dtype在此上下文中的行为。有什么想法吗

这样做:

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]

你的熊猫版本是什么?我的答案是0.13.1,我的答案适用于字符串和数字布尔标准。数据帧创建代码中也有错误。请删除列表中的空值->
129753
第一行的数据谢谢,更正了。我正在考虑添加一个空值(这就是为什么
id
的类型是float,而不是int),但随后无法确定如何表示空条目。对于空值,可以使用
NaN
np.NaN
,注意这需要对
NaN
值进行不同的比较,例如
df[pd.isnull(df.id)]
我使用0.12.0(更新的问题),但这些操作不起作用?@Zhubarb这可能是一个错误,我没有安装0.12.0进行比较,你能升级吗?