保留列顺序 - Python Pandas 和列连接

Preserving Column Order - Python Pandas and Column Concat

所以我的 google-fu 似乎并没有为我伸张正义,看起来应该是一个微不足道的程序。

In Pandas for Python 我有 2 个数据集,我想合并它们。使用 .concat 效果很好。问题是,.concat 重新排序我的专栏。从数据检索的角度来看,这是微不足道的。从 "I just want to open the file and quickly see the most important column" 的角度来看,这很烦人。

File1.csv
Name    Username    Alias1 
Tom     Tomfoolery   TJZ
Meryl   MsMeryl      Mer
Timmy   Midsize      Yoda

File2.csv
Name    Username   Alias 1   Alias 2
Bob     Firedbob   Fire      Gingy
Tom     Tomfoolery  TJZ      Awww

Result.csv
    Alias1 Alias2   Name    Username
0   TJZ    NaN      Tom     Tomfoolery
1   Mer    NaN      Meryl   MsMeryl
2   Yoda   NaN      Timmy   Midsize
0   Fire   Gingy    Bob     Firedbob
1   TJZ    Awww     Tom     Tomfoolery

结果很好,但在我使用的数据文件中有 1,000 列。最重要的 2-3 现在在中间。有没有办法,在这个玩具示例中,我可以强制 "Username" 成为第一列,"Name" 成为第二列,显然保留每个下方的值。

另请注意,当我保存到文件时,它还会在旁边保存该编号 (0 1 2 0 1)。如果也有办法防止这种情况发生,那就太好了。如果没有,那也没什么大不了的,因为它可以快速修复。

谢谢!

假设串联的 DataFrame 是 df,您可以按如下方式执行列的重新排序:

important = ['Username', 'Name']
reordered = important + [c for c in df.columns if c not in important]
df = df[reordered]
print df

输出:

     Username   Name Alias1 Alias2
0  Tomfoolery    Tom    TJZ    NaN
1     MsMeryl  Meryl    Mer    NaN
2     Midsize  Timmy   Yoda    NaN
0    Firedbob    Bob   Fire  Gingy
1  Tomfoolery    Tom    TJZ   Awww

数字列表[0, 1, 2, 0, 1]是DataFrame的索引。为了防止它们被写入输出文件,您可以在 to_csv():

中使用 index=False 选项
df.to_csv('Result.csv', index=False, sep=' ')