楼主: casey_c
1184 1

[程序分享] Python 中多层级数据的生成与索引 [推广有奖]

  • 0关注
  • 10粉丝

博士生

92%

还不是VIP/贵宾

-

威望
0
论坛币
96 个
通用积分
2.0091
学术水平
2 点
热心指数
15 点
信用等级
2 点
经验
11502 点
帖子
278
精华
0
在线时间
94 小时
注册时间
2016-11-22
最后登录
2022-5-2

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
Python 中多层级数据的生成与索引方法基于 Pandas 和 Numpy 中的一些功能,首先我们需要导入这两个库:
  1. import pandas as pd
  2. import numpy as np
复制代码
我们知道,Pandas 序列中的序号序列 index 是一个列表,这个列表可以由多个二元组构成,如下所示:
  1. index = [('California', 2000), ('California', 2010),
  2.          ('New York', 2000), ('New York', 2010),
  3.          ('Texas', 2000), ('Texas', 2010)]
  4. populations = [33871648, 37253956,
  5.                18976457, 19378102,
  6.                20851820, 25145561]
  7. pop = pd.Series(populations, index=index)
  8. pop
复制代码
1.png

对于这样的序列,我们依然可以通过指定的索引条件进行目标数据的选取:
  1. pop[('California', 2010):('Texas', 2000)]
复制代码
2.png

  1. pop[[i for i in pop.index if i[1] == 2010]]
复制代码
3.png

运用 Pandas 中的 MultiIndex.from_tuples 函数,我们可以将 index 列表转化为一个 MultiIndex 对象:
  1. index = pd.MultiIndex.from_tuples(index)
  2. index
复制代码
4.png

当我们用该 MultiIndex 对象对 Pandas 序列进行重塑时,目标序列的序号将会被转化为多层级的形式:
  1. pop = pop.reindex(index)
  2. pop
复制代码
5.png

这时,属于不同层级的序号将被视为不同维度上的索引值,我们可以使用多维索引的方式来索引所需要的目标数据:
  1. pop[:, 2010]
复制代码
6.png

我们可以通过 unstack 函数将序列 pop 转化为一个二维的数据框,序号中的两个维度将分别对应数据框的行与列:
  1. pop_df = pop.unstack()
  2. pop_df
复制代码
7.png

可以通过调整参数 level 的值来指定生成数据框的行列:
  1. pop.unstack(level=0)
复制代码
8.png

以上内容转自 数析学院,原文内容较多,有空继续搬运,感兴趣的同学可以直接去查看原文
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python Populations california Population ulation

沙发
casey_c 发表于 2017-1-23 10:55:28 |只看作者 |坛友微信交流群

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 05:51