Python 3.x 外部合并列序列不是固定的

Python 3.x 外部合并列序列不是固定的,python-3.x,pandas,Python 3.x,Pandas,我正在尝试使用pandas合并两个数据帧。 我正在做数据帧的外部合并。“我的数据框”有以下列: DF1: (ID, X) DF2: (ID, Y, Z) 当我合并这些数据帧时,输出数据帧中的列顺序会发生变化 对于一些迭代,我得到 DF_OUTPUT: (ID, X, Y, Z) 或者有时是: DF_OUTPUT: (X, ID, Y, Z) 如何在输出数据框中保留列的顺序?合并后可以.reindex。使用将保留发生顺序的pd.unique,而不是使用排序的np.unique import

我正在尝试使用pandas合并两个数据帧。 我正在做数据帧的外部合并。“我的数据框”有以下列:

DF1: (ID, X)
DF2: (ID, Y, Z)
当我合并这些数据帧时,输出数据帧中的列顺序会发生变化

对于一些迭代,我得到

DF_OUTPUT: (ID, X, Y, Z)
或者有时是:

DF_OUTPUT: (X, ID, Y, Z)

如何在输出数据框中保留列的顺序?

合并后可以
.reindex
。使用将保留发生顺序的
pd.unique
,而不是使用排序的
np.unique

import pandas as pd

cols = pd.unique(df1.columns.append(df2.columns))
df1.merge(df2, how='outer').reindex(cols, axis=1)

合并后,您可以
.reindex
。使用将保留发生顺序的
pd.unique
,而不是使用排序的
np.unique

import pandas as pd

cols = pd.unique(df1.columns.append(df2.columns))
df1.merge(df2, how='outer').reindex(cols, axis=1)

你确定DF1中的顺序总是
(ID,X)
,而不是
(X,ID)
@ALollz吗?是的,我确定。但是您建议的解决方案奏效了您是否确定
DF1
中的顺序始终是
(ID,X)
,而不是
(X,ID)
@ALollz是的,我确信这一点。但你建议的解决方案奏效了