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迭代器的使用方法实例
Nov 21 Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 Python
TensorFlow实现卷积神经网络
May 24 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
python 实现图片旋转 上下左右 180度旋转的示例
Jan 24 Python
浅谈Python中eval的强大与危害
Mar 13 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
Python操作Sqlite正确实现方法解析
Feb 05 Python
python中线程和进程有何区别
Jun 17 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 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
php防注
2007/01/15 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
php建立Ftp连接的方法
2015/03/07 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
jquery 问答知识整理
2010/02/11 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
解决js图片加载时出现404的问题
2020/11/30 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
vue项目打包部署_nginx代理访问方法详解
2018/09/20 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
python基础教程之缩进介绍
2014/08/29 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
基于Python数据分析之pandas统计分析
2020/03/03 Python
python 模拟登陆163邮箱
2020/12/15 Python
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
财务部经理岗位职责
2014/02/03 职场文书
经典团队口号
2014/06/06 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
尼克胡哲观后感
2015/06/08 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
幼儿园庆元旦主持词
2015/07/06 职场文书
志愿者服务宣传标语口号
2015/12/26 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python
Tomcat starup.bat 脚本实现开机自启动
2022/04/20 Servers