Python实现把多维数组展开成DataFrame


Posted in Python onNovember 30, 2019

如下所示:

import numpy as np
import pandas as pd

################# 准备数据 #################
a1 = np.arange(1,101)
a3 = a1.reshape((2,5,10))
a3
'''
array([[[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
  [ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
  [ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
  [ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40],
  [ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50]],  
  [[ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60],
  [ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70],
  [ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80],
  [ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90],
  [ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]]])
'''

################# 准备标签 #################
# 第 1 维的标签
index1 = pd.Series(np.arange(1,11))
index1 = index1.astype(str)
index1 = 'A'+index1
index1
'''
0  A1
1  A2
2  A3
3  A4
4  A5
5  A6
6  A7
7  A8
8  A9
9 A10
'''

# 第 2 维的标签
index2 = pd.Series(np.arange(1,6))
index2 = index2.astype(str)
index2 = 'B'+index2
index2
'''
0 B1
1 B2
2 B3
3 B4
4 B5
'''

# 第 3 维的标签
index3 = pd.Series(np.arange(1,3))
index3 = index3.astype(str)
index3 = 'C'+index3
index3
'''
0 C1
1 C2
'''

################# 展开数据 #################
# 把三维数组展开
value = a3.flatten()
value = pd.Series(value)
value.name = 'value'
value
'''
0  1
1  2
2  3
  ... 
97  98
98  99
99 100
Name: value, Length: 100, dtype: int64
'''

################# 展开标签 #################
import itertools

# index的笛卡尔乘积。注意:高维在前,低维在后
prod = itertools.product(index3, index2, index1 )
# 转换为DataFrame
prod = pd.DataFrame([x for x in prod])
prod.columns = ['C', 'B', 'A']
prod.T
'''
 0 1 2 3 4 5 6 7 8 9 ... 90 91 92 93 94 95 96 \
C C1 C1 C1 C1 C1 C1 C1 C1 C1 C1 ... C2 C2 C2 C2 C2 C2 C2 
B B1 B1 B1 B1 B1 B1 B1 B1 B1 B1 ... B5 B5 B5 B5 B5 B5 B5 
A A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 ... A1 A2 A3 A4 A5 A6 A7 
 97 98 99 
C C2 C2 C2 
B B5 B5 B5 
A A8 A9 A10 
[3 rows x 100 columns]
'''

################# 最终数据 #################
# 合并成一个DataFrame
pd.concat([prod, value], axis=1)
'''
  C B A value
0 C1 B1 A1  1
1 C1 B1 A2  2
2 C1 B1 A3  3
3 C1 B1 A4  4
4 C1 B1 A5  5
5 C1 B1 A6  6
6 C1 B1 A7  7
7 C1 B1 A8  8
8 C1 B1 A9  9
9 C1 B1 A10  10
10 C1 B2 A1  11
11 C1 B2 A2  12
12 C1 B2 A3  13
13 C1 B2 A4  14
14 C1 B2 A5  15
15 C1 B2 A6  16
16 C1 B2 A7  17
17 C1 B2 A8  18
18 C1 B2 A9  19
19 C1 B2 A10  20
20 C1 B3 A1  21
21 C1 B3 A2  22
22 C1 B3 A3  23
23 C1 B3 A4  24
24 C1 B3 A5  25
25 C1 B3 A6  26
26 C1 B3 A7  27
27 C1 B3 A8  28
28 C1 B3 A9  29
29 C1 B3 A10  30
.. .. .. ... ...
70 C2 B3 A1  71
71 C2 B3 A2  72
72 C2 B3 A3  73
73 C2 B3 A4  74
74 C2 B3 A5  75
75 C2 B3 A6  76
76 C2 B3 A7  77
77 C2 B3 A8  78
78 C2 B3 A9  79
79 C2 B3 A10  80
80 C2 B4 A1  81
81 C2 B4 A2  82
82 C2 B4 A3  83
83 C2 B4 A4  84
84 C2 B4 A5  85
85 C2 B4 A6  86
86 C2 B4 A7  87
87 C2 B4 A8  88
88 C2 B4 A9  89
89 C2 B4 A10  90
90 C2 B5 A1  91
91 C2 B5 A2  92
92 C2 B5 A3  93
93 C2 B5 A4  94
94 C2 B5 A5  95
95 C2 B5 A6  96
96 C2 B5 A7  97
97 C2 B5 A8  98
98 C2 B5 A9  99
99 C2 B5 A10 100
[100 rows x 4 columns]
'''

以上这篇Python实现把多维数组展开成DataFrame就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python远程桌面协议RDPY安装使用介绍
Apr 15 Python
Python生成不重复随机值的方法
May 11 Python
python实现unicode转中文及转换默认编码的方法
Apr 29 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 Python
python3 判断列表是一个空列表的方法
May 04 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
python读取xlsx的方法
Dec 25 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
Python 面向对象部分知识点小结
Mar 09 Python
Python脚本调试工具安装过程
Jan 11 Python
Python散点图与折线图绘制过程解析
Nov 30 #Python
Python OpenCV视频截取并保存实现代码
Nov 30 #Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 #Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 #Python
基于Python中isfile函数和isdir函数使用详解
Nov 29 #Python
python os.path.isfile 的使用误区详解
Nov 29 #Python
python实现矩阵和array数组之间的转换
Nov 29 #Python
You might like
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
Node.js websocket使用socket.io库实现实时聊天室
2017/02/20 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
Vue全局分页组件的实现代码
2018/08/10 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
详解微信小程序网络请求接口封装实例
2019/05/02 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python设计模式之代理模式实例
2014/04/26 Python
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
python实现数据写入excel表格
2018/03/25 Python
python实现自主查询实时天气
2018/06/22 Python
python代码能做成软件吗
2020/07/24 Python
Django日志及中间件模块应用案例
2020/09/10 Python
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
什么是索引指示器
2012/08/20 面试题
三下乡活动方案
2014/01/31 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
公司副总经理岗位职责
2014/10/01 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
鉴史问廉观后感
2015/06/10 职场文书