2015-09-12 28 views
10

Vì vậy, google-fu của tôi dường như không làm cho tôi công lý với những gì có vẻ như là một thủ tục tầm thường.Bảo quản thứ tự cột - Python Pandas và Concat cột

Trong Pandas cho Python Tôi có 2 bộ dữ liệu, tôi muốn hợp nhất chúng. Điều này hoạt động tốt bằng cách sử dụng .concat. Vấn đề là, .concat sắp xếp lại các cột của tôi. Từ một điểm truy xuất dữ liệu, điều này là tầm thường. Từ một "Tôi chỉ muốn mở tập tin và nhanh chóng thấy cột quan trọng nhất" quan điểm, điều này là gây phiền nhiễu.

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 

Kết quả là tốt, nhưng trong tệp dữ liệu tôi đang làm việc với tôi có 1.000 cột. 2-3 quan trọng nhất bây giờ là ở giữa. Có cách nào không, trong ví dụ đồ chơi này, tôi có thể buộc "Tên người dùng" là cột đầu tiên và "Tên" làm cột thứ hai, bảo toàn các giá trị bên dưới mỗi chiều xuống rõ ràng.

Cũng như một lưu ý phụ, khi tôi lưu tệp, nó cũng lưu số đó ở bên cạnh (0 1 2 0 1). Nếu có một cách để ngăn chặn điều đó quá, đó sẽ là mát mẻ. Nếu không, nó không phải là một việc lớn vì nó là một sửa chữa nhanh chóng để loại bỏ.

Cảm ơn!

Trả lời

8

Giả sử DataFrame nối là df, bạn có thể thực hiện việc sắp xếp lại các cột như sau:

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

Output:

 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 

Các danh sách các số [0, 1, 2, 0, 1] là chỉ số của DataFrame. Để ngăn không cho chúng được ghi vào tệp đầu ra, bạn có thể sử dụng tùy chọn index=False trong to_csv():

df.to_csv('Result.csv', index=False, sep=' ') 
Các vấn đề liên quan