Мне нужен фрейм данных со всеми dtypes, которые являются подмножествами np.number
.Функция to_numeric позволяет мне делать это для фреймов данных, которые имеют некоторые данные.В качестве углового случая я тестировал его с пустым фреймом данных, где он, похоже, не работает.
import numpy as np
import pandas as pd
df = pd.DataFrame(columns=['col1', 'col2', 'col3'])
df = df.apply(pd.to_numeric, errors='coerce')
print(df.dtypes)
дает мне вывод
col1 object
col2 object
col3 object
dtype: object
, где я ожидаю
col1 int64
col2 int64
col3 int64
dtype: object
Если я заполню фрейм данных, проблема исчезнет:
df = pd.DataFrame({'col1': [1, 2], 'col2': [1, 2], 'col3': [1, 2]})
df = df.apply(pd.to_numeric, errors='coerce')
print(df.dtypes)
даст мне ожидаемый результат.
Может кто-нибудь объяснить это другое поведение и предложить обходной путь.Я не хочу явно проверять, есть ли у данных фрейм данных, если нет необходимости.
Я работаю с python 3.6.1