保留列顺序-Python Pandas和列Con

2024-05-16 00:21:44 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我的google fu似乎并没有用看起来应该是一个微不足道的过程来公正地对待我。

在Pandas for Python中,我有两个数据集,我想合并它们。使用.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最重要的是在中间。有没有办法,在这个玩具示例中,我可以强制“Username”作为第一列,“Name”作为第二列,很明显地保留了每个列下面的值。

另请注意,当我保存到文件时,它也会将编号保存在旁边(0 1 2 0 1)。如果也有办法防止,那就太酷了。如果不是的话,那也没什么大不了的,因为这是一个快速修复的方法。

谢谢!


Tags: 文件csvnameusernamenan角度timmymer
1条回答
网友
1楼 · 发布于 2024-05-16 00:21:44

假设连接的数据帧是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=' ')

相关问题 更多 >