Pandas列在附加到新的数据帧后进行排序



我想将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多列,不可能对每一列都进行硬编码。

您将一个系列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

我们可以修复

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

append中的sort = False用于行排序

最新更新