【问题标题】:Reset column index in Pandas to 0,1,2,3...?将 Pandas 中的列索引重置为 0,1,2,3...?
【发布时间】:2022-02-09 08:38:06
【问题描述】:

如何将数据框列的索引重置为 0、1、2、3、4?

df.reset_index() 怎么不重置列索引?)

>>> data = data.drop(data.columns[[1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]], axis=1)
>>> data = data.drop(data.index[[0,1]],axis = 0)
>>> print(data.head())
             0         2    3    4    20
2  500292014600       .00  .00  .00  NaN
3  500292014600    100.00  .00  .00  NaN
4  500292014600  11202.00  .00  .00  NaN
>>> data = data.reset_index(drop = True)
>>> print(data.head())
              0         2    3    4    20
 0  500292014600       .00  .00  .00  NaN
 1  500292014600    100.00  .00  .00  NaN
 2  500292014600  11202.00  .00  .00  NaN

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    尝试以下方法:

    df = df.T.reset_index(drop=True).T
    

    【讨论】:

    • 这听起来像个黑客; reset_index 方法也应该应用于列索引
    • 这是解决问题的好方法,但有没有直接重置行和列索引的方法?
    【解决方案2】:

    尝试替换列名:

    >>> import numpy as np
    >>> import pandas as pd
    
    >>> my_data = [[500292014600, .00, .00, .00, np.nan],
                  [500292014600, 100.00, .00, .00, np.nan], 
                  [500292014600, 11202.00, .00, .00, np.nan]]
    >>> df = pd.DataFrame(my_data, columns=[0,2,3,4,20])
    >>> df
                  0        2    3    4  20
    0  500292014600      0.0  0.0  0.0 NaN
    1  500292014600    100.0  0.0  0.0 NaN
    2  500292014600  11202.0  0.0  0.0 NaN
    
    >>> df.columns = range(df.shape[1])
    >>> df
                  0        1    2    3   4
    0  500292014600      0.0  0.0  0.0 NaN
    1  500292014600    100.0  0.0  0.0 NaN
    2  500292014600  11202.0  0.0  0.0 NaN
    

    【讨论】:

      【解决方案3】:

      在 pandas 中,索引本质上是指行索引。正如您在数据中看到的那样,行索引在 drop 和 reset_index() 之后被重置。

      对于列,你需要重命名它们,你可以这样做

      data.columns = [ 0,1,2,3,4]
      

      【讨论】:

        【解决方案4】:

        如果您使用import numpy as np 导入了numpy

        只需使用data.columns = [np.arange(0,data.shape[1])] 将列设置为从零开始的索引

        【讨论】:

          【解决方案5】:

          为什么当我使用 df.reset_index 时,我的列的索引没有重置?

          “索引”列实际上更像是一个列标题。有人可能会使用“索引”作为有意义的标题。例如,它们可能代表“试验 1”、“试验 2”等,因此您不希望自动重新索引它而失去意义。

          如何将此索引重置为 0,1,2,3,4?

          重置列索引:

          df.columns = range(df.columns.size)
          

          【讨论】:

            【解决方案6】:

            纯 Python 实现

            我们enumerate columns 的数据框创建一个项目数组。然后我们map 函数reversed 到数组中的每一项。最后,我们在数据框对象方法rename中创建并输入字典作为参数columns

            columns = dict(map(reversed, enumerate(df.columns)))
            df = df.rename(columns=columns)
            df.head()
            

            结果:

                          0        1    2    3   4
            0  500292014600      0.0  0.0  0.0 NaN
            1  500292014600    100.0  0.0  0.0 NaN
            2  500292014600  11202.0  0.0  0.0 NaN
            

            【讨论】:

              猜你喜欢
              • 2021-10-26
              • 2016-05-03
              • 1970-01-01
              • 2019-06-18
              • 2013-09-08
              • 1970-01-01
              • 1970-01-01
              • 2019-05-04
              相关资源
              最近更新 更多