熊猫将数据框重塑为所需的列数

时间:2020-05-11 03:36:27

标签: python pandas dataframe

我有两个数据框,我需要在另一个框后追加一个。不幸的是,两个数据框的大小不同:

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是可变数据帧,并且每次迭代时大小可能会增加或减小。有什么方法可以保持它的灵活性,而不是实际指定要整形的列数?

1 个答案:

答案 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