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 24 Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 Python
Python实现的桶排序算法示例
Nov 29 Python
python opencv3实现人脸识别(windows)
May 25 Python
使用PM2+nginx部署python项目的方法示例
Nov 07 Python
django 自定义过滤器的实现
Feb 26 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
Feb 27 Python
Python检测端口IP字符串是否合法
Jun 05 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
Oct 31 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
Python快速实现一键抠图功能的全过程
Jun 29 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
德劲1103二次变频版的打磨
2021/03/02 无线电
php适配器模式介绍
2012/08/14 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
js压缩利器
2007/02/20 Javascript
jquery复选框checkbox实现删除前判断
2014/04/20 Javascript
JavaScript实现简单的数字倒计时
2015/05/15 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
js正则表达式注册页面表单验证
2016/10/11 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
Vue如何实现监听组件原生事件
2020/07/03 Javascript
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
在Python中操作字典之update()方法的使用
2015/05/22 Python
python删除过期文件的方法
2015/05/29 Python
python避免死锁方法实例分析
2015/06/04 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
Python实现将通信达.day文件读取为DataFrame
2018/12/22 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
美国批发零售网站:GearXS
2016/07/26 全球购物
Lookfantastic瑞典:英国知名美妆购物网站
2018/04/06 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
药学专业个人自我评价
2013/11/11 职场文书
残疾人创业典型事迹
2014/02/01 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书