如何对索引进行操作后保持列顺序?
>>> df = pd.DataFrame({'a' : [0,1], 'b' : [0,1], 'c' : [0,1]})
>>> df.columns
Index(['a', 'b', 'c'], dtype='object')
>>> df = df.set_index('c')
# some filtering operation
>>> df = df.reset_index()
>>> df.columns
Index(['c', 'a', 'b'], dtype='object')
重置索引后,列的顺序为['c','a','b'],而不是先前的['a','b','c'] 是否可以通过指定我要在何处插入列的方法来reset_index?
我知道我可以使用pd.reindex(column_names)
,但是我想知道是否有更快的方法
这将派上用场,因为当我打算对所述列执行过滤时,我经常使用某些列作为索引,并且需要在将结果写入.csv文件之前重置索引。列的顺序是固定的。
答案 0 :(得分:1)
一种方法是将原始订单列存储在变量中,然后在重置索引后使用该变量进行赋值。看看下面的代码。
df = pd.DataFrame({'a' : [0,1], 'b' : [0,1], 'c' : [0,1]})
print('Before reset index:', df.columns)
col = df.columns # assign columns
df = df.set_index('c')
df = df.reset_index()
# get same order columns
df = df[col]
print('\nAfter reset index:', df.columns)
有关输出,请参阅下面的快照。