панды to_numeric не приводят пустые кадры данных - PullRequest
0 голосов
/ 16 сентября 2018

Мне нужен фрейм данных со всеми 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

1 Ответ

0 голосов
/ 16 сентября 2018

Использование astype , кажется, достигает этого

df=df.astype("int64")

Вы также можете явно назначать типы для каждого столбца

df = pd.DataFrame({'col1':pd.Series([], dtype='int'),
               'col2':pd.Series([], dtype='int'),
               'col3':pd.Series([], dtype='int')})

print(df.dtypes)

col1    int64
col2    int64
col3    int64
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...