Pandas数据截取/选择/切片

原文地址

分类目录——Pandas

  • 导入支持包

    import pandas as pd
    import numpy as np
    
  • 生成测试数据

    dates = pd.date_range('20200217', periods=6)
    df = pd.DataFrame(np.arange(24).reshape((6, 4)), index=dates, columns=['A', 'B', 'C', 'D'])
    '''
                 A   B   C   D
    2020-02-17   0   1   2   3
    2020-02-18   4   5   6   7
    2020-02-19   8   9  10  11
    2020-02-20  12  13  14  15
    2020-02-21  16  17  18  19
    2020-02-22  20  21  22  23
    '''
    
  • 获取一列

    # 获取某列
    print(df['A'])
    # 或
    print(df.A)
    '''
    2020-02-17     0
    2020-02-18     4
    2020-02-19     8
    2020-02-20    12
    2020-02-21    16
    2020-02-22    20
    Freq: D, Name: A, dtype: int32
    '''
    
  • 对行进行切片

    # 对行进行切片
    ## 按数字索引
    print(df[0:3])  # 含首不含尾
    '''
                A  B   C   D
    2020-02-17  0  1   2   3
    2020-02-18  4  5   6   7
    2020-02-19  8  9  10  11
    '''
    
    ## 按索引名称
    print(df['20200217':'20200219'])  # 含首也含尾
    '''
                A  B   C   D
    2020-02-17  0  1   2   3
    2020-02-18  4  5   6   7
    2020-02-19  8  9  10  11
    '''
    
    # 如果要获取一行的数据
    print(df['20200218':'20200218'])  # 含首也含尾
    #             A  B  C  D
    # 2020-02-18  4  5  6  7
    print(df[1:2])  # 含首不含尾
    #             A  B  C  D
    # 2020-02-18  4  5  6  7
    
  • 通过索引的名称切取DataFrame数据——loc

    # 通过索引名称(loc)获取Dataframe子数据
    ## 取某一行(只能传一行的名称)
    print(df.loc['20200218'])
    '''
    A    4
    B    5
    C    6
    D    7
    Name: 2020-02-18 00:00:00, dtype: int32
    '''
    
    ## 取某行的若干个属性(列)
    print(df.loc['20200218', ['A', 'C', 'D']])
    '''
    A    4
    C    6
    D    7
    Name: 2020-02-18 00:00:00, dtype: int32
    '''
    
    ## 获取所有行的若干属性(列)
    print(df.loc[:,['A','B']])
    #              A   B
    # 2020-02-17   0   1
    # 2020-02-18   4   5
    # 2020-02-19   8   9
    # 2020-02-20  12  13
    # 2020-02-21  16  17
    # 2020-02-22  20  21
    
  • 通过索引的序数切取DataFrame数据——iloc

    # 获取序数索引(iloc)获取Dataframe子数据
    print(df.iloc[3,1])     # 获取索引行3列1的值
    # 13
    print('-------------------------------------------')
    print(df.iloc[3:5,1:3])
    # 含首不含尾,其中单一个冒号(:)表示去这一维的所有;-1表示这一维的最后一项;(:3)表示从0到3;(3:)表示从3到最后一项(含)
    '''
                 B   C
    2020-02-20  13  14
    2020-02-21  17  18
    '''
    
  • 间行、间列切取

    # 离散切取
    print(df.iloc[[1,3,5],1:3])
    '''
                 B   C
    2020-02-18   5   6
    2020-02-20  13  14
    2020-02-22  21  22
    '''
    
  • 通过条件筛选切取

    # 还可以通过删选切取
    print(df[df.A>8])
    '''
                 A   B   C   D
    2020-02-20  12  13  14  15
    2020-02-21  16  17  18  19
    2020-02-22  20  21  22  23
    '''
    
  • 参考文献

    代码主要来自 Pandas 选择数据,略有改动

发布了139 篇原创文章 · 获赞 116 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/BBJG_001/article/details/104490621