2015-06-04 17 views
0

我有它总是以相同的列初始化的数据帧,但有时没有任何数据:如何用特定列创建一个空的熊猫数据框?

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

我几乎总是从词典中创建一个数据框进制,它工作在这种情况下是相同的:

import pandas as pd 

df = pd.DataFrame({'a': [], 'b': [], 'c': []}) 
相关问题