向pandas DataFrame对象添加空列的最简单方法是什么?我碰到的最好的是
df['foo'] = df.apply(lambda _: '', axis=1)
有没有更合理的方法?
向pandas DataFrame对象添加空列的最简单方法是什么?我碰到的最好的是
df['foo'] = df.apply(lambda _: '', axis=1)
有没有更合理的方法?
当前回答
我寻找这样一个解决方案的原因只是在多个df之间添加空格,这些df已经使用pd按列连接。Concat函数,然后使用xlsxwriter写入excel。
df[' ']=df.apply(lambda _: '', axis=1)
df_2 = pd.concat([df,df1],axis=1) #worked but only once.
# Note: df & df1 have the same rows which is my index.
#
df_2[' ']=df_2.apply(lambda _: '', axis=1) #didn't work this time !!?
df_4 = pd.concat([df_2,df_3],axis=1)
然后将第二个lambda调用替换为
df_2['']='' #which appears to add a blank column
df_4 = pd.concat([df_2,df_3],axis=1)
我测试的输出是使用xlsxwriter到excel。 Jupyter空白列看起来和excel一样,虽然没有xlsx格式。 不知道为什么第二个Lambda调用没有工作。
其他回答
我寻找这样一个解决方案的原因只是在多个df之间添加空格,这些df已经使用pd按列连接。Concat函数,然后使用xlsxwriter写入excel。
df[' ']=df.apply(lambda _: '', axis=1)
df_2 = pd.concat([df,df1],axis=1) #worked but only once.
# Note: df & df1 have the same rows which is my index.
#
df_2[' ']=df_2.apply(lambda _: '', axis=1) #didn't work this time !!?
df_4 = pd.concat([df_2,df_3],axis=1)
然后将第二个lambda调用替换为
df_2['']='' #which appears to add a blank column
df_4 = pd.concat([df_2,df_3],axis=1)
我测试的输出是使用xlsxwriter到excel。 Jupyter空白列看起来和excel一样,虽然没有xlsx格式。 不知道为什么第二个Lambda调用没有工作。
如果我理解正确,assignment应该填写:
>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]})
>>> df
A B
0 1 2
1 2 3
2 3 4
>>> df["C"] = ""
>>> df["D"] = np.nan
>>> df
A B C D
0 1 2 NaN
1 2 3 NaN
2 3 4 NaN
一个更简单的解决方案是:
df = df.reindex(columns = header_list)
其中“header_list”是你想要显示的标题列表。
列表中包含的任何标题,如果在数据帧中没有找到,将在下面添加空白单元格。
因此,如果
header_list = ['a','b','c', 'd']
然后将c和d添加为带空白单元格的列
你可以这样做
df['column'] = None #This works. This will create a new column with None type
df.column = None #This will work only when the column is already present in the dataframe
如果您想从列表中添加列名
df=pd.DataFrame()
a=['col1','col2','col3','col4']
for i in a:
df[i]=np.nan