我有几个共享共同字段的数据框。其他任何字段都特定于数据框。当输出到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()
之类的东西吗?还是只有一种更通用,更优雅的方式来执行这种类型的重新分配?
答案 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)