zoukankan      html  css  js  c++  java
  • pandas-04 多级index操作

    pandas-04 多级index操作

    在pandas中可以为series和dataframe设置多个index,也就是说可以有多级index和column。这样可以对pandas的操作更加灵活。

    import numpy as np
    import pandas as pd
    from pandas import Series, DataFrame
    
    np.random.seed(666)
    # series 中的 index
    s1 = Series(np.random.randn(6), index=[['1', '1', '1', '2', '2', '2'], ['a', 'b', 'c', 'a', 'b', 'c']])
    print(s1)
    '''
    1  a    0.824188
       b    0.479966
       c    1.173468
    2  a    0.909048
       b   -0.571721
       c   -0.109497
    dtype: float64
    '''
    
    print(s1['1']) # 可以 获取 index 为 1 的 series
    '''
    a    0.824188
    b    0.479966
    c    1.173468
    dtype: float64
    '''
    
    print(s1['1']['a']) # 0.8241880833175302
    
    print(s1[:, 'a'])
    ''' 同样是一个 series
    1    0.824188
    2    0.909048
    dtype: float64
    '''
    
    # 多级的Series, 可以转化为一个 dataframe
    df1 = s1.unstack() # 二级series 可以转化dataframe
    print(df1)
    '''
              a         b         c
    1  0.824188  0.479966  1.173468
    2  0.909048 -0.571721 -0.109497
    '''
    
    df2 = DataFrame([s1['1'], s1['2']])
    print(df2)
    '''
              a         b         c
    0  0.824188  0.479966  1.173468
    1  0.909048 -0.571721 -0.109497
    '''
    
    # dataframe 转化为 series
    s2 = df1.unstack()
    print(s2)
    '''
    a  1    0.824188
       2    0.909048
    b  1    0.479966
       2   -0.571721
    c  1    1.173468
       2   -0.109497
    dtype: float64
    '''
    s2 = df1.T.unstack()
    print(s2)
    '''
    1  a    0.824188
       b    0.479966
       c    1.173468
    2  a    0.909048
       b   -0.571721
       c   -0.109497
    dtype: float64
    '''
    
    # 创建 一个 多级的 dataframe
    df = DataFrame(np.arange(16).reshape(4, 4), index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]], 
                   columns=[['beijing', 'beijing', 'shanghai', 'shanghai'], [8, 9, 8, 9]]
                   )
    print(df)
    '''
        beijing     shanghai    
              8   9        8   9
    a 1       0   1        2   3
      2       4   5        6   7
    b 1       8   9       10  11
      2      12  13       14  15
    '''
    
    # 访问 多级 dataframe 的元素
    print(df['beijing']) # 返回 也是一个 dataframe
    '''
          8   9
    a 1   0   1
      2   4   5
    b 1   8   9
      2  12  13
    '''
    
    print(df['beijing'][8]) # 访问dataframe和访问Series的方法一样
    '''
    a  1     0
       2     4
    b  1     8
       2    12
    Name: 8, dtype: int64
    '''
    
  • 相关阅读:
    angular项目中,使用ant(蚂蚁金服)生成table表格
    angular2 单元测试
    angular2 单元测试
    angular2单元测试
    angular2单元测试
    angular2单元测试
    angular2单元测试
    浅谈Unicode和char的关系(Java)
    剖析面试最常见问题之 Java 基础知识
    ssm系列框架
  • 原文地址:https://www.cnblogs.com/wenqiangit/p/11252717.html
Copyright © 2011-2022 走看看