2017-02-14 257 views
0

我越來越過程中添加額外的空列:熊貓DF創作

AssertionError: 14 columns passed, passed data had 12 
columns. 

錯誤是不言自明,我創建從列表列表的數據幀,其實每個列表包含12個字段。如何強制pandas.DataFrame在一次操作中添加帶有NaN的額外列。 這是我如何創建df。

pandas.DataFrame(results, columns=FIELDS) 

有沒有辦法在數據幀創建簡化這個,而不必這樣做:

pandas.DataFrame(results, columns=FIELDS_12) 
df["ExtraField13"] = np.nan 
df["ExtraField14"] = np.nan 
+0

額外的列總是在最後?否則你想要的是模棱兩可的。 – SethMMorton

+0

有些情況下,是的,其他情況下,我會問是否有辦法強制總是14列,而不管列表中的列表大小。另一個解決方法是將列表列表正常化,但是想知道熊貓是否可以這樣做。 – spicyramen

+0

如果不是最後,你怎麼知道在哪裏插入空列? – SethMMorton

回答

1

那麼,你真的沒有硬編碼的東西像你個人有以上列分配,逐行。這是做類似的事情,但使用循環來代替填充列:

>>> import pandas as pd 
>>> df = pd.DataFrame({'A': [1,2,3], 'B': [4,5,6]}) 
>>> df 
    A B 
0 1 4 
1 2 5 
2 3 6 
>>> def pad_cols(df, n_cols): 
...  while len(df.columns) < n_cols: 
...   df['padded' + str(len(df.columns)+1)] = None 
...  return df 
... 
>>> pad_cols(df, 4) 
    A B padded3 padded4 
0 1 4 None None 
1 2 5 None None 
2 3 6 None None