2015-09-12 35 views
10

因此,我的谷歌似乎并没有在我的正义与什么似乎应该是一个微不足道的程序。保留列顺序 - Python熊猫和列Concat

在Pandas for Python中我有2个数据集,我想合并它们。这可以正常使用.concat。问题是,.concat重新排列我的列。从数据检索的角度来看,这是微不足道的。从“我只想打开文件并快速看到最重要的专栏”的角度来看,这很烦人。

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 

结果很好,但在我正在使用的数据文件中,我有1000列。最重要的2-3个现在在中间。有没有办法,在这个玩具的例子中,我可以迫使“用户名”成为第一列,“名字”成为第二列,明显保留下面的值。

另外作为一个方面说明,当我保存到文件时,它也保存在侧面编号(0 1 2 0 1)。如果有一种方法可以防止这种情况发生,那很酷。如果没有,它不是什么大问题,因为它是一个快速修复删除。

谢谢!

回答

8

假设级联数据帧是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]的列表是数据框的索引。为防止将它们写入输出文件,可以使用to_csv()中的index=False选项:

df.to_csv('Result.csv', index=False, sep=' ')