Python 从序列生成数据帧时保持列顺序

Python 从序列生成数据帧时保持列顺序,python,python-3.x,pandas,Python,Python 3.x,Pandas,当我尝试使用不同的索引为这两个系列创建一个数据帧时,pandas不会保留该系列中列的顺序,如下所示 index = ['one','two','three','four','five','six','seven','eight','nine','ten'] index2 = index[:9] + ['Ha'] a = pd.Series(list(range(10)), index = index) b = pd.Series(list(range(10)), index = index2)

当我尝试使用不同的索引为这两个系列创建一个
数据帧时,pandas不会保留该系列中列的顺序,如下所示

index = ['one','two','three','four','five','six','seven','eight','nine','ten']
index2 = index[:9] + ['Ha']

a = pd.Series(list(range(10)), index = index)
b = pd.Series(list(range(10)), index = index2)*2

df = pd.DataFrame([a,b], index = ['tens','times2'])
输出

Ha  eight   five    four    nine    one     seven   six     ten     three   two

但是当我使用具有相同索引的序列创建
数据帧
时,原始列顺序(列表
索引
的顺序)被保留。为什么会发生这种情况?

这是因为当2
系列的索引不匹配时,熊猫会将它们合并在一起,并按字母顺序排列列。这使得数据帧的列具有顺序,我猜您希望在创建数据帧后需要对它们重新排序


df=pd.DataFrame([a,b],index=['tens','times2'])
df=df.reindex_轴(索引+['Ha'],轴='columns')

df.reindex_轴
是一种更快的方法,可以实现
df=df[index+['Ha']]

可能的重复