保留列顺序 - 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=' ')
所以我的 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=' ')