2017-02-14 223 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