2015-06-04 4 views
0

У меня DataFrame, который всегда инициализированный с теми же колоннами, но иногда не имеет каких-либо данных:Как создать пустой Pandas DataFrame с определенными столбцами?

import pandas as pd 

data = [] 
df = pd.DataFrame(data, columns=['a', 'b', 'c']) 

Но это терпит неудачу с ошибкой:

Traceback (most recent call last): 
    … 
ValueError: Shape of passed values is (0, 0), indices imply (3, 0) 

Как я могу создать пустой DataFrame с столбцами?

ответ

2

As of Pandas version 0.16.1, проходя data = [] работы:

In [85]: df = pd.DataFrame([], columns=['a', 'b', 'c']) 

In [86]: df 
Out[86]: 
Empty DataFrame 
Columns: [a, b, c] 
Index: [] 

Для более старых версий панд, не проходит ни data:

In [69]: df = pd.DataFrame(columns=['a', 'b', 'c']) 

In [70]: df 
Out[70]: 
Empty DataFrame 
Columns: [a, b, c] 
Index: [] 

или передать data=None:

In [71]: df = pd.DataFrame(None, columns=['a', 'b', 'c']) 

In [72]: df 
Out[72]: 
Empty DataFrame 
Columns: [a, b, c] 
Index: [] 
+0

В случае, когда такие данные, то есть более чистый, чем метод: 'DF = pd.DataFrame (данные = (данные, если Len (данные) else None), columns = ['a', 'b', 'c']) ', чтобы установить его? –

+0

Есть только обычные трюки. Либо используйте выражение 'if..else', условное выражение (как вы показываете), либо' try..except'. – unutbu

0

I почти всегда создавайте кадр данных из дикции ичных, и она работает так же, в данном случае:

import pandas as pd 

df = pd.DataFrame({'a': [], 'b': [], 'c': []}) 
Смежные вопросы