我尝试多次运行以下代码。输出有时为“ True”(我所期望的),有时为“ False”。崇高有什么问题吗?我用jupyter笔记本进行了测试,输出始终为“ True”。
import pandas as pd
df = pd.DataFrame({'a':[1,2,3]})
print(df.dtypes.isin(['int64']))
如果我打印df.dtypes,则输出始终为'int64'。
print(df.dtypes)
>> a int64
dtype: object
Python版本:anaconda python3.6。崇高版本:3.1.1。熊猫版:0.23.4
答案 0 :(得分:1)
您的示例输出不是True
,而是False
。如果您执行df.dtypes.values
,将会看到它不是字符串'int64'
,而是dtype('int64')
,因此isin(['int64'])
应该总是返回False
我在Jupyter
中测试过输出始终是False
df = pd.DataFrame({'a':[1,2,3]})
print(df.dtypes.isin(['int64']))
a False
dtype: bool
print(df.dtypes.values)
array([dtype('int64')], dtype=object)
解决方案是将df.dtypes
转换为str
:
df.dtypes.apply(str).values
array(['int64'], dtype=object)
因此您现在可以执行isin
:
df.dtypes.apply(str).isin(['int64'])
a True
dtype: bool