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和IPython中使用Docker
Apr 28 Python
python编写爬虫小程序
May 14 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
python生成excel的实例代码
Nov 08 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
对python的bytes类型数据split分割切片方法
Dec 04 Python
Python使用while循环花式打印乘法表
Jan 28 Python
python的schedule定时任务模块二次封装方法
Feb 19 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
在tensorflow中实现去除不足一个batch的数据
Jan 20 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
Jun 02 Python
Pandas DataFrame求差集的示例代码
Dec 13 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 url地址栏传中文乱码解决方法集合
2010/06/25 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
PHP CLI模式下的多进程应用分析
2013/06/03 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
AngularJS延迟加载html template
2016/07/27 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
2018/04/22 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
python的类方法和静态方法
2014/12/13 Python
基于Python实现文件大小输出
2016/01/11 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
女大学生毕业找工作的自我评价
2013/10/03 职场文书
外贸主管求职简历的自我评价
2013/10/23 职场文书
《母鸡》教学反思
2014/02/25 职场文书
历史专业大学生职业生涯规划书
2014/03/13 职场文书
早安问候语大全
2015/11/10 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书