2017-02-14 3 views
0

Ich erhalte:Pandas fügen Sie zusätzliche leere Spalten während DF Schaffung

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

Fehler ist selbsterklärend, ich bin ein Datenrahmen aus einer Liste von Listen erstellen, jede Liste in der Tat enthält 12 Felder. Wie kann ich pandas.DataFrame zwingen, zusätzliche Spalten mit NaN in einem Vorgang hinzuzufügen. So erstelle ich den df.

pandas.DataFrame(results, columns=FIELDS) 

Gibt es eine Möglichkeit, dies in Datenrahmen Schöpfung zu vereinfachen, ohne dass dies zu tun zu haben:

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

Werden die zusätzlichen Spalten immer am Ende sein? Ansonsten ist das was du willst mehrdeutig. – SethMMorton

+0

In einigen Fällen, ja, andere nicht, würde ich fragen, ob es eine Möglichkeit gibt, immer 14 Spalten unabhängig von der Größe der Liste in der Liste der Listen zu erzwingen. Eine andere Problemumgehung wäre, die Liste der Listen zu normalisieren, aber zu fragen, ob dies mit Pandas möglich ist. – spicyramen

+0

Wenn es nicht am Ende ist, woher wissen Sie, wo die leere Spalte eingefügt werden soll? – SethMMorton

Antwort

1

Nun, Sie nicht wirklich müssen hart Code Dinge wie Sie oben mit einzelnen haben Spaltenzuweisungen, Zeile für Zeile. Dies macht eine ähnliche Sache, aber verwendet stattdessen eine Schleife, um Spalten zu füllen:

>>> 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 
Verwandte Themen