• set_index()与reset_index()函数


    一 set_index()函数

    1 主要是理解drop和append参数,注意与reset_index()参数的不同.

    import pandas as pd
    
    df = pd.DataFrame({'a': range(4),
                               'b': range(4, 0, -1),
                               'c': ['one', 'one', 'two', 'two'],
                               'd': ['a','b','c','d']})
    
    print(df)
    #    a  b    c  d
    # 0  0  4  one  a
    # 1  1  3  one  b
    # 2  2  2  two  c
    # 3  3  1  two  d
    
    
    # set_index()的drop参数默认为True,如下即默认将普通列c列置为索引列后,将原先的普通列c列删除.
    # 注意它与reset_index()的drop不同,reset_index()中的drop默认为False,且这个drop为True时,删除的是原先的index列
    df.set_index(['c'], inplace=True)
    print(df)
    #      a  b  d
    # c           
    # one  0  4  a
    # one  1  3  b
    # two  2  2  c
    # two  3  1  d
    
    
    # append参数为True,会保留原先的索引,为False时,新设置的索引会覆盖原先的索引,它类似与reset_index()中的drop.
    df.set_index(['b'], inplace=True, append=True)
    print(df)
    #        a  d
    # c   b      
    # one 4  0  a
    #     3  1  b
    # two 2  2  c
    #     1  3  d
    View Code

    二 reset_index()函数

    1 重置索引后,drop参数默认为False,想要删除原先的索引列要置为True.想要在原数据上修改要inplace=True.特别是不赋值的情况必须要加,否则drop无效.

    all_user_repay.reset_index(drop=True,inplace=True)
    df1 = pd.DataFrame({'A': ['A0', 'A1'],
                        'B': ['B0', 'B1'],
                        'C': ['C0', 'C1'],
                        'D': ['D0', 'D1']})
    df2 = pd.DataFrame({'A': ['A4', 'A5'],
                        'B': ['B4', 'B5'],
                        'C': ['C4', 'C5'],
                        'D': ['D4', 'D5']})
    frames = [df1, df2]
    result = pd.concat(frames)
    print(result.reset_index())
    #    index   A   B   C   D
    # 0      0  A0  B0  C0  D0
    # 1      1  A1  B1  C1  D1
    # 2      0  A4  B4  C4  D4
    # 3      1  A5  B5  C5  D5
    print(result.reset_index(drop=True))
    #     A   B   C   D
    # 0  A0  B0  C0  D0
    # 1  A1  B1  C1  D1
    # 2  A4  B4  C4  D4
    # 3  A5  B5  C5  D5
    View Code

     Series.reset_index()

    注意参数level默认移除原先的全部索引,即将原先的全部索引都置为普通列.

    如果给level赋值,则只有所赋值的索引列置为普通列,其余的留下做索引列.

    参考:http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.reset_index.html?highlight=reset_index#pandas.Series.reset_index

    arrays = [np.array(['bar', 'bar', 'baz', 'baz']),
             np.array(['one', 'two', 'one', 'two'])]
    s2 = pd.Series(
                   range(4), name='foo',
                   index=pd.MultiIndex.from_arrays(arrays,
                   names=['a', 'b']))
    print(s2)
    #这里如果想要保留修改不能用inplace参数,只能再赋给另一个引用
    print(s2.reset_index(level='a'))
    print(s2.reset_index())
    print(type(s2))
    # a    b
    # bar  one    0
    #      two    1
    # baz  one    2
    #      two    3
    # Name: foo, dtype: int64
    #        a  foo
    # b
    # one  bar    0
    # two  bar    1
    # one  baz    2
    # two  baz    3
    #      a    b  foo
    # 0  bar  one    0
    # 1  bar  two    1
    # 2  baz  one    2
    # 3  baz  two    3
    # <class 'pandas.core.series.Series'>
    View Code

    2 把某一列设为索引列

    df.set_index('列名',inplace=True)

  • 相关阅读:
    supervisor 简单使用
    golang的表格驱动测试
    golang和python的二进制转换
    django-rest-framework-jwt的使用
    threading.local在flask中的用法
    分布式的两种算法
    第24课
    Mock以及Mockito的使用
    java下使用chromedriver获取访问页面状态码
    Mockito:一个强大的用于Java开发的模拟测试框架
  • 原文地址:https://www.cnblogs.com/xxswkl/p/10997437.html
Copyright © 2020-2023  润新知