当前位置: 首页 > 面试题库 >

按名称将列移动到pandas表的前面

勾岳
2023-03-14
问题内容

这是我的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()但我想按名称进行移动。


问题答案:

我们可以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以获得与ix以后版本的熊猫不建议使用的相同的结果0.20.0

df = df.loc[:, cols]


 类似资料:
  • 问题内容: 我正在尝试通过两种不同的方法在Pandas数据框中选择多个列: 1)通过列号,例如1-3列和6列起。 和 2)通过列名列表,例如: 然后, years_month 将产生以下内容: 也就是说,在两种方法中,仅加载名称在 Years_month 列表中的列的最佳(或正确)方法是什么? 问题答案: 我认为您需要合并列的位置,然后用于选择: 对于第二种方法子集,通过: 样品: 您也可以总结的

  • 问题内容: 我想将数据框的几组列融合为多个目标列。与问题类似,Python Pandas将初始列的组融为多个目标列,并将pandas数据框重塑/将多个值变量堆叠为单独的列。但是,我需要通过列名而不是索引位置来明确地执行此操作。 原始数据框: 目标数据框 对此方法的建议深表感谢。 问题答案: 有一种更有效的方法来解决涉及熔化多组不同色谱柱的这类问题。专为这些确切情况而设计。

  • 我环顾四周,但找不到确切的解决方案,尽管这应该很容易完成: 我有一个DataFrame,我只想将其中一列移动到前面。如何在不将列传递给列表的情况下做到这一点,或者目前没有办法解决这个问题?

  • 我正试着在一个熊猫数据目录中加载一个SQLAlchemy。 当我尝试: 我得到一个属性错误: 和 上一个问题SQLAlchemy ORM到pandas DataFrame的转换解决了我的问题,但是解决方案:使用不是我的解决方案。我使用db.session.add()和db.session.commit()打开/关闭会话,但是当我使用时,就会得到一个属性错误:

  • 问题内容: 将列表列表转换为pandas数据框很容易: 但是,如何将df重新变成列表列表? 问题答案: 您可以访问基础数组并调用其方法:

  • 问题内容: 我有一个带有列名称的数据集“城市” 我使用以下代码,并将列名命名为 在pandas._period.Period数据类型中。 我希望列为 我希望在输出列名称中使用小写字母“ q”。 谢谢。 问题答案: 您需要使用什么: 样品: