代码之家  ›  专栏  ›  技术社区  ›  rocksNwaves

使用DataFrame.set_索引()方法[复制]

  •  0
  • rocksNwaves  · 技术社区  · 5 年前

    早上好,

    我有两列错误和时间数据:

    edf = pd.DataFrame({'error':error, 'time':time})
    

    它给出了:

                error    time
    0     0.000000e+00 -10.000
    1     4.219215e-28  -9.995
    2     8.870728e-28  -9.990
    3     1.398745e-27  -9.985
    4     1.960445e-27  -9.980
    5     2.575915e-27  -9.975
    6     3.249142e-27  -9.970
    7     3.984379e-27  -9.965
    8     4.786157e-27  -9.960
    9     5.659303e-27  -9.955
    10    6.608959e-27  -9.950
    

    edf.set_index('time', drop=True) 为了将time列设置为我的索引,并将其从数据帧中的前一个位置删除(我相信它在默认情况下会被删除)。然而,这完全没有任何作用。事实上,我很困惑,所以我决定直接从文档中复制并粘贴代码示例,实际上它也不起作用。

    df = pd.DataFrame({'month': [1, 4, 7, 10],
                       'year': [2012, 2014, 2013, 2014],
                       'sale': [55, 40, 84, 31]})
    

       month  year  sale
    0      1  2012    55
    1      4  2014    40
    2      7  2013    84
    3     10  2014    31
    

    df.set_index('month') 还提供:

    月-年销售额
    0 1 2012 55
    2 2013年7月84
    3 2014年10月31日
    

    而不是什么文件广告:

           year  sale
    month
    1      2012    55
    4      2014    40
    7      2013    84
    10     2014    31
    

    2 回复  |  直到 5 年前
        1
  •  1
  •   Quang Hoang    5 年前

    set_index 默认情况下返回新的数据帧。所以使用:

    # recommended
    edf.set_index('time', drop=True, inplace=True)
    

    edf = edf.set_index('time', drop=True)
    
        2
  •  1
  •   Dave Costa    5 年前

    默认情况下,大多数数据帧操作不会修改原始数据帧。相反,它们会返回一个新的数据帧。

    您可以将该结果分配给新变量,或分配给同一个变量:

    df = df.set_index('month')
    

    或者您可以向函数传递一个参数,告诉它就地修改原始数据帧:

    df.set_index('month', inplace=True)
    

    当我开始和熊猫合作时,这让我大失所望。