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 version 2.7 required, which was not found in the registry
Aug 26 Python
python的tkinter布局之简单的聊天窗口实现方法
Sep 03 Python
Python base64编码解码实例
Jun 21 Python
Linux下为不同版本python安装第三方库
Aug 31 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
Jan 12 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
Python3内置模块random随机方法小结
Jul 13 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
Python 异常处理Ⅳ过程图解
Oct 18 Python
在python中求分布函数相关的包实例
Apr 15 Python
详解解决jupyter不能使用pytorch的问题
Feb 18 Python
如何用python绘制雷达图
Apr 24 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英文字母大小写转换函数小结
2014/05/03 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
JavaScript 密码强度判断代码
2009/09/05 Javascript
取选中的radio的值
2010/01/11 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
使用js 设置url参数
2013/07/08 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
Vue的Options用法说明
2020/08/14 Javascript
jQuery实现简单评论区功能
2020/10/26 jQuery
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
python用什么编辑器进行项目开发
2020/06/17 Python
Python字符串split及rsplit方法原理详解
2020/06/29 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
2020/11/01 Python
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
.NET程序员的几道面试题
2012/06/01 面试题
论文评语大全
2014/04/29 职场文书
产品发布会策划方案
2014/05/12 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
2016幼儿园教师节新闻稿
2015/11/25 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
Python中Cookies导出某站用户数据的方法
2021/05/17 Python
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis
Python编解码问题及文本文件处理方法详解
2021/06/20 Python
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL