我想将具有唯一值(不包括空单元格)的行从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列以上,因此不可能对每一列进行硬编码。
答案 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