2015-05-05 5 views
24

Я хочу создать Pandas DataFrame, заполненный NaNs. В ходе своих исследований я обнаружил an answer:Элегантный способ создания пустых панд DataFrame с NaN типа float

import pandas as pd 

df = pd.DataFrame(index=range(0,4),columns=['A']) 

Этот код приводит к DataFrame наполненной NaNs из «объекта» типа. Поэтому они не могут использоваться позже, например, с помощью метода interpolate(). Поэтому я создал DataFrame с этим сложным кодом (вдохновленного this answer):

import pandas as pd 
import numpy as np 

dummyarray = np.empty((4,1)) 
dummyarray[:] = np.nan 

df = pd.DataFrame(dummyarray) 

Это приводит к DataFrame наполненного NaN из «поплавка» типа, поэтому он может быть использован в дальнейшем с interpolate(). Есть ли более элегантный способ создать тот же результат?

+0

Мне пришлось поставить dummyarray = np.empty ((4,1)) для меня на работу –

ответ

34

Просто передайте желаемый представитель в качестве скалярного первого аргумента, например 0, math.inf или, в данном случае, np.nan. Конструктор инициализирует массив значений до размера, указанного index и columns:

>>> df = pd.DataFrame(np.nan, index=[0,1,2,3], columns=['A']) 
>>> df.dtypes 
A float64 
dtype: object 
+1

Работает также для pd.Series. Отлично! – Bill

10

Вы можете указать DTYPE непосредственно при построении DataFrame:

>>> df = pd.DataFrame(index=range(0,4),columns=['A'], dtype='float') 
>>> df.dtypes 
A float64 
dtype: object 

Задание DTYPE силы панд, чтобы попытаться создания DataFrame с этим типом, а не пытаться вывести его.

0

Будет ли это хороший подход?

pd.DataFrame(np.nan, index=[], columns=[]) 

По какой причине он не является частью библиотеки?

Смежные вопросы