2017-02-14 5 views
0

DFの作成時に追加の空の列を追加します。パンダは私が取得しています

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

エラーが自明である私は、リストのリストからデータフレームを作成しています、実際には各リストには12個のフィールドが含まれています。 pandas.DataFrameを強制して、NaNを含む余分な列を1回の操作で追加することができます。 これは、dfを作成する方法です。あなたが個々に上記持っているよう

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

余分な列は常に最後にありますか?それ以外の場合は、曖昧です。 – SethMMorton

+0

リストのリストのリストのサイズに関係なく、常に14個のカラムを強制する方法があるかどうかを尋ねる場合もあります。もう一つの回避策は、リストのリストを正規化することですが、これがPandasで可能かどうか疑問です。 – spicyramen

+0

最後でない場合は、空の列をどこに挿入するかをどのように知っていますか? – SethMMorton

答えて

1

さて、あなたは本当にハードコードのものにする必要はありません。

pandas.DataFrame(results, columns=FIELDS) 

は、これを行うことなく、データフレームの作成にこれを簡素化するが方法です。行ごとの割り当て。これは同様のことですが、列をパディングする代わりにループを使用します。

>>> 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 
関連する問題