下面是我的df:
Net Upper Lower Mid Zsore
Answer option
More than once a day 0% 0.22% -0.12% 2 65
Once a day 0% 0.32% -0.19% 3 45
Several times a week 2% 2.45% 1.10% 4 78
Once a week 1% 1.63% -0.40% 6 65
如何按名称("Mid"
)将列移动到表的前面,索引为0。结果应该是这样的:
Mid Upper Lower Net Zsore
Answer option
More than once a day 2 0.22% -0.12% 0% 65
Once a day 3 0.32% -0.19% 0% 45
Several times a week 4 2.45% 1.10% 2% 78
Once a week 6 1.63% -0.40% 1% 65
我当前的代码使用df.columns.tolist()
按索引移动列,但我想按名称移动它。
发布于 2014-08-04 23:30:10
我们可以通过传递一个列表来使用ix
重新排序:
In [27]:
# get a list of columns
cols = list(df)
# move the column to head of list using index, pop and insert
cols.insert(0, cols.pop(cols.index('Mid')))
cols
Out[27]:
['Mid', 'Net', 'Upper', 'Lower', 'Zsore']
In [28]:
# use ix to reorder
df = df.ix[:, cols]
df
Out[28]:
Mid Net Upper Lower Zsore
Answer_option
More_than_once_a_day 2 0% 0.22% -0.12% 65
Once_a_day 3 0% 0.32% -0.19% 45
Several_times_a_week 4 2% 2.45% 1.10% 78
Once_a_week 6 1% 1.63% -0.40% 65
另一种方法是引用该列,并将其重新插入到前面:
In [39]:
mid = df['Mid']
df.drop(labels=['Mid'], axis=1,inplace = True)
df.insert(0, 'Mid', mid)
df
Out[39]:
Mid Net Upper Lower Zsore
Answer_option
More_than_once_a_day 2 0% 0.22% -0.12% 65
Once_a_day 3 0% 0.32% -0.19% 45
Several_times_a_week 4 2% 2.45% 1.10% 78
Once_a_week 6 1% 1.63% -0.40% 65
您也可以使用loc
来实现相同的结果,因为从0.20.0
开始,pandas的未来版本中将不推荐使用ix
:
df = df.loc[:, cols]
发布于 2019-06-06 22:27:29
也许我漏掉了一些东西,但这些答案中的许多似乎过于复杂。您应该能够仅设置单个列表中的列:
列到前面:
df = df[ ['Mid'] + [ col for col in df.columns if col != 'Mid' ] ]
或者,如果你想把它移到后面:
df = df[ [ col for col in df.columns if col != 'Mid' ] + ['Mid'] ]
或者,如果您想移动多个列:
cols_to_move = ['Mid', 'Zsore']
df = df[ cols_to_move + [ col for col in df.columns if col not in cols_to_move ] ]
发布于 2015-07-14 09:11:52
您可以在pandas中使用df.reindex()函数。df是
Net Upper Lower Mid Zsore
Answer option
More than once a day 0% 0.22% -0.12% 2 65
Once a day 0% 0.32% -0.19% 3 45
Several times a week 2% 2.45% 1.10% 4 78
Once a week 1% 1.63% -0.40% 6 65
定义列名列表
cols = df.columns.tolist()
cols
Out[13]: ['Net', 'Upper', 'Lower', 'Mid', 'Zsore']
将列名移动到所需位置
cols.insert(0, cols.pop(cols.index('Mid')))
cols
Out[16]: ['Mid', 'Net', 'Upper', 'Lower', 'Zsore']
然后使用df.reindex()
函数重新排序
df = df.reindex(columns= cols)
输出为: df
Mid Upper Lower Net Zsore
Answer option
More than once a day 2 0.22% -0.12% 0% 65
Once a day 3 0.32% -0.19% 0% 45
Several times a week 4 2.45% 1.10% 2% 78
Once a week 6 1.63% -0.40% 1% 65
https://stackoverflow.com/questions/25122099
复制相似问题