熊猫列在追加到新数据框后进行排序

时间:2020-09-25 02:11:25

标签: python excel pandas dataframe

我想将具有唯一值(不包括空单元格)的行从df1附加到空df2df1的结构如下:

idx   A1     B1    C1    A2    B2    C2 
---------------------------------------
I1    n      n            b     c 
J1    x      x      x     x     x     x
K1    a      b      c     d     e     f

因此,在这种情况下,行K1将附加到df2,因为所有值都是唯一的。 要添加该行,我尝试了

df2 = pd.DataFrame()
df2 = df2.append(df1.loc['K1'],sort=False)

我期待中

idx   A1     B1    C1    A2    B2    C2 
---------------------------------------
K1    a      b      c     d     e     f

但实际上我有

idx   A1     A2    B1    B2    C1    C2 
---------------------------------------
K1    a      d      b    e      c     f

即使我设置了sort=False,看起来列也已排序。我知道我可以将其硬编码为

df2 = df2.append({'idx':idx,'A1':df1.loc[idx,'A1'],'A2':df1.loc[idx,'A2'],'B1':df1.loc[idx,'B1']...}) 实现我想要的。但是我的实际文件有30列以上,因此不可能对每一列进行硬编码。

2 个答案:

答案 0 :(得分:0)

我们可以解决

df2 = df2.reindex(df1.columns, axis=1)
   A1 B1 C1 A2 B2 C2
K1  a  b  c  d  e  f

sort = False中的append用于行排序

答案 1 :(得分:0)

append对数据框进行一系列操作,以便对列进行排序。尝试在两个数据帧上追加以保持原始列的顺序(注意: append默认sort为False,因此不需要指定它

df_final = df2.append(df1.loc[['K1']])

Out[63]:
    A1 B1 C1 A2 B2 C2
idx
K1   a  b  c  d  e  f