仅重新排列熊猫中的特定列

时间:2019-03-25 16:40:53

标签: python pandas

我有几个共享共同字段的数据框。其他任何字段都特定于数据框。当输出到Excel时,列的输出顺序没有特定的顺序,我希望它们在每个数据帧中首先显示共享的列。

aaa   bbb   ccc  col1   col2   col3
 1     2     3   Name   Date   Bank

所需的输出:

col1   col2   col3  aaa   bbb   ccc
Name   Date   Bank   1     2     3

我可以这样做:

columns_i_want_first = ['col1', 'col2', 'col3']
df = df.reindex(columns=columns_i_want_first)

但是很明显,这会删除其余的列。我有什么办法可以在重新编制索引时使用else df.columns.tolist()之类的东西吗?还是只有一种更通用,更优雅的方式来执行这种类型的重新分配?

1 个答案:

答案 0 :(得分:0)

可能类似于:

columns_i_want_first = ['col1', 'col2', 'col3']
df=(pd.concat([df.reindex(columns_i_want_first,axis=1),
             df[df.columns.difference(columns_i_want_first)]],axis=1))

   col1  col2  col3  aaa  bbb  ccc
0  Name  Date  Bank    1    2    3

或者如果目标是先是对象列然后是int,则使用:

pd.concat([df.select_dtypes('object'),df.select_dtypes('int')],axis=1)