我有两个数据框,我需要在另一个框后追加一个。不幸的是,两个数据框的大小不同:
df1
Mon Tue Wed Thu Fri
11 65 45 76 90
df2
2 7 9 5
* df2为日期格式
所需的输出如下:
df_new
Mon Tue Wed Thu Fri
11 65 45 76 90
2 7 9 5 0
我尝试了两个数据帧的append / concat:
df_new = pd.DataFrame( np.concatenate( (df1.values, df2.values), axis=0 ) )
但是我遇到了以下错误:
ValueError:级联轴的所有输入数组维必须完全匹配,但是沿着维1,索引为0的数组的大小为5,索引为1的数组的大小为4
无论df2形状与df1形状都不匹配,我都想创建0个值列。因此,我尝试重塑数据框以适应增加的列的要求,但无法正常工作:
new = pd.DataFrame(df2.values.reshape(1, 5))
但是出现以下错误:
ValueError:无法将大小为4的数组重塑为形状(1,5)
有什么办法吗?
请注意,df1是可变数据帧,并且每次迭代时大小可能会增加或减小。有什么方法可以保持它的灵活性,而不是实际指定要整形的列数?
答案 0 :(得分:2)
df1 = pd.read_clipboard()
df1
Mon Tue Wed Thu Fri
0 11 65 45 76 90
df2 = pd.read_clipboard(header=None)
0 1 2 3
0 2 7 9 5
#get df1 and df2 to have similar names
mapp = dict(enumerate(df1.columns))
df2.columns = df2.columns.map(mapp)
#using @anky's suggestion : df2.columns=df1.columns[:df2.shape[1]]
#concatenate both dfs, and fillna on the null value
pd.concat((df1,df2)).fillna(0)
Mon Tue Wed Thu Fri
0 11 65 45 76 90.0
0 2 7 9 5 0.0