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 28 Python
python3实现读取chrome浏览器cookie
Jun 19 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
python实现给scatter设置颜色渐变条colorbar的方法
Dec 13 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
用python实现英文字母和相应序数转换的方法
Sep 18 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
Feb 07 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
Python基于pyjnius库实现访问java类
Jul 31 Python
python输入中文的实例方法
Sep 14 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
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
JavaScript window.location对象
2014/11/14 Javascript
JavaScript实现非常简单实用的下拉菜单效果
2015/08/27 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
页面点击小红心js实现代码
2018/05/26 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
Python选择排序、冒泡排序、合并排序代码实例
2015/04/10 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
报到证丢失证明
2014/01/11 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
检讨书范文2000字
2015/01/28 职场文书
田径运动会广播稿
2015/08/19 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
高考满分作文赏析(2篇)
2019/08/12 职场文书