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编程实现语音控制电脑
Apr 01 Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 Python
Python3基础之输入和输出实例分析
Aug 18 Python
Python使用random和tertools模块解一些经典概率问题
Jan 28 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
python统计中文字符数量的两种方法
Jan 31 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
Python文件读写w+和r+区别解析
Mar 26 Python
python如何使用腾讯云发送短信
Sep 17 Python
Python reversed反转序列并生成可迭代对象
Oct 22 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
别人整理的服务器变量:$_SERVER
2006/10/20 PHP
PHP IPV6正则表达式验证代码
2010/02/16 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
JavaScript Timer实现代码
2010/02/17 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
2019/06/15 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
奥地利婴儿用品和玩具购物网站:baby-markt.at
2020/01/26 全球购物
制药工程专业应届生求职信
2013/09/24 职场文书
硕士研究生自我鉴定范文
2013/12/27 职场文书
腾讯广告词
2014/03/19 职场文书
2014年小学教研工作总结
2014/12/06 职场文书
开除员工通知
2015/04/22 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
Python中递归以及递归遍历目录详解
2021/10/24 Python
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android