Pandas的学习(6.DataFrame和Series创建多层行索引以及多层列索引)

1.创建多层行索引

(1) 隐式构造   

     最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组

     -- Series也可以创建多层索引

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame

'''使用Series创建多层索引(隐式)'''
s = Series([80, 90, 82, 92], index=[['a', 'a', 'b', 'b'], ['期中', '期末', '期中', '期末']])
print(s)
"""
a  期中    80
   期末    90
b  期中    82
   期末    92
dtype: int64
"""


'''使用DataFrame创建多层索引(隐式)'''
df = DataFrame(np.random.randint(0, 150, size=(6, 3)),
               columns=['语文', '数学', 'python'],
               index=[['zsan', 'zsan', 'lisi', 'lisi', 'wwu', 'wwu'],
                      ['mid', 'end', 'mid', 'end','mid', 'end']])
print(df)
"""
           语文   数学  python
zsan mid   77   60      29
     end  113  121      38
lisi mid   46   14      33
     end  115  127      41
wwu  mid   35   96      77
     end  139   41     134
"""

 (2) 显示构造

        ---  使用数组 pd.MultiIndex.from_arrays

        --- 使用tuple pd.MultiIndex.from_tuples

        --- 使用product pd.MultiIndex.from_product

"""显示构造."""

'''1.使用数组 pd.MultiIndex.from_arrays'''
df1 = DataFrame(np.random.randint(0, 150, size=(6, 3)),
                columns=['Java', 'HTML5', 'Python'],
                index=pd.MultiIndex.from_arrays([['张三', '张三', '李四', '李四', '王五', '王五'],
                                                 ['期中', '期末', '期中', '期末', '期中', '期末']]))
print(df1)
'''2.使用tuple pd.MultiIndex.from_tuples'''
df2 = DataFrame(np.random.randint(0, 150, size=(6, 3)),
                columns=['Java', 'HTML5', 'Python'],
                index=pd.MultiIndex.from_tuples([('张三', '期中'), ('张三', '期末'), ('李四', '期中'), ('李四', '期末'), ('王五', '期中'),
                                                 ('王五', '期末')]))
print(df2)
'''3.使用product pd.MultiIndex.from_product'''
'''最简单,推荐使用'''
df3 = DataFrame(np.random.randint(0, 150, size=(6, 3)),
                columns=['Java', 'HTML5', 'Python'],
                index=pd.MultiIndex.from_product([['张三', '李四', '王五'], ['期中', '期末']]))
print(df3)
"""  # 三种不同的显示创建方式,同样的结果
       Java  HTML5  Python
张三 期中   133     79     133
   期末    31     50     104
李四 期中    63     96      45
   期末   145     14     103
王五 期中   145     39      53
   期末    41     98      46
"""

 

2.创建多层列索引

    除了行索引index,列索引columns也能用同样的方法创建多层索引

"""多层列索引"""
df4 = DataFrame(np.random.randint(0, 150, size=(3, 6)),
                columns=pd.MultiIndex.from_product([['Java', 'HTML', 'Python'], ['期中', '期末']]),
                index=['张三', '李四', '小张'])
print(df4)
"""
   Java      HTML     Python     
     期中   期末   期中  期末     期中   期末
张三   37  132   77  18    127   76
李四    8   47   65  59     68   63
小张   16   65  138  28     56  135
"""

  其他的方法都是类似的

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是那个同伟伟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值