работает python с возвышенным: вывод dtype не стабилен - PullRequest
0 голосов
/ 25 января 2019

Я пытался запустить следующие коды несколько раз. Иногда вывод «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: анаконда python3.6. Превосходная версия: 3.1.1. версия для панд: 0.23.4

1 Ответ

0 голосов
/ 25 января 2019

Результат вашего примера не 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
...