如何将列添加到空的pandas数据帧?

00_*_*_00 10 python dataframe pandas

我有一个空的dataframe.

df=pd.DataFrame(columns=['a'])
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我想生成df2,另一个空数据帧,有两列'a'和'b'.

如果我做

df.columns=df.columns+'b'
Run Code Online (Sandbox Code Playgroud)

它不起作用(我将列重命名为'ab')并且以下都没有

df.columns=df.columns.tolist()+['b']
Run Code Online (Sandbox Code Playgroud)

如何在df中添加单独的列'b',并df.emtpy继续保持True

使用.loc也是不可能的

   df.loc[:,'b']=None
Run Code Online (Sandbox Code Playgroud)

因为它返回

  Cannot set dataframe with no defined index and a scalar
Run Code Online (Sandbox Code Playgroud)

Sum*_*Jha 15

以下是将空列添加到空数据框的几种方法:

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)
Run Code Online (Sandbox Code Playgroud)

输出:

Empty DataFrame
Columns: [a, b, c, d, e, f]
Index: []
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.


Ben*_*n.T 10

如果你这样做,df['b'] = None那么df.empty仍然True是df是:

Empty DataFrame
Columns: [a, b]
Index: []
Run Code Online (Sandbox Code Playgroud)

编辑:要从df2列中df添加空列并添加新列,您可以执行以下操作:

df2 = pd.DataFrame(columns = df.columns.tolist() + ['b', 'c', 'd'])
Run Code Online (Sandbox Code Playgroud)


ALo*_*llz 6

如果您想同时添加多个列,您还可以重新索引。

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: []
Run Code Online (Sandbox Code Playgroud)


jpp*_*jpp 5

这是一种方式:

df2 = df.copy()
df2 = df2.join(pd.DataFrame(columns=['b']))
Run Code Online (Sandbox Code Playgroud)

此方法的优点是您可以添加任意数量的列而无需显式循环.

此外,如果不存在数据,这满足您df.empty评估的要求True.