我想将df1
中具有唯一值(不包括空单元格(的行附加到空的df2
。df1
的结构如下:
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
用于行排序