簡體   English   中英

保留列順序 - Python Pandas和列Concat

[英]Preserving Column Order - Python Pandas and Column Concat

因此,我的google-fu似乎並沒有讓我正義,看起來應該是一個微不足道的程序。

在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

結果很好,但在我正在使用的數據文件中,我有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] 0,1,2,0,1 [0, 1, 2, 0, 1]是DataFrame的索引。 要防止將它們寫入輸出文件,可以使用to_csv()index=False選項:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM