我有一个空的dataframe
。
df=pd.DataFrame(columns=['a'])
出于某种原因,我想生成df2,另一个空数据帧,有两列' a'和' b'。
如果我这样做
df.columns=df.columns+'b'
它不起作用(我将列重命名为' ab') 并且以下都没有
df.columns=df.columns.tolist()+['b']
如何添加单独的列' b'到df,df.emtpy
继续True
?
也不可能使用.loc
df.loc[:,'b']=None
返回
Cannot set dataframe with no defined index and a scalar
答案 0 :(得分:12)
以下是将空列添加到空数据框的几种方法:
df=pd.DataFrame(columns=['a'])
df['b'] = None
df = df.assign(c=None)
df = df.assign(d=df['a'])
df['e'] = pd.Series(index=df.index)
df = pd.concat([df,pd.DataFrame(columns=list('f'))])
print(df)
<强>输出强>:
Empty DataFrame
Columns: [a, b, c, d, e, f]
Index: []
我希望它有所帮助。
答案 1 :(得分:9)
如果您只是df['b'] = None
,那么df.empty
仍然是True
,df是:
Empty DataFrame
Columns: [a, b]
Index: []
编辑:
要从df2
列创建空df
并添加新列,您可以执行以下操作:
df2 = pd.DataFrame(columns = df.columns.tolist() + ['b', 'c', 'd'])
答案 2 :(得分:5)
这是一种方式:
#define BOOST_LIB_NAME "boost_numpy36"
此方法的优点是您可以添加任意数量的列而无需显式循环。
此外,如果没有数据,这符合您LNK1104: cannot open file 'libboost_pythonPY_MAJOR_VERSIONPY_MINOR_VERSION-vc120-mt-gd-x32-1_67.lib'
评估df2 = df.copy()
df2 = df2.join(pd.DataFrame(columns=['b']))
的要求。
答案 3 :(得分:4)
如果您想同时添加多个列,也可以重新编制索引。
new_cols = ['c', 'd', 'e', 'f', 'g']
df2 = df.reindex(df.columns.union(new_cols), axis=1)
#Empty DataFrame
#Columns: [a, c, d, e, f, g]
#Index: []
答案 4 :(得分:3)
您可以在此使用http://
concat