Python实现把多维数组展开成DataFrame
如下所示:
importnumpyasnp importpandasaspd #################准备数据################# 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 ''' 0A1 1A2 2A3 3A4 4A5 5A6 6A7 7A8 8A9 9A10 ''' #第2维的标签 index2=pd.Series(np.arange(1,6)) index2=index2.astype(str) index2='B'+index2 index2 ''' 0B1 1B2 2B3 3B4 4B5 ''' #第3维的标签 index3=pd.Series(np.arange(1,3)) index3=index3.astype(str) index3='C'+index3 index3 ''' 0C1 1C2 ''' #################展开数据################# #把三维数组展开 value=a3.flatten() value=pd.Series(value) value.name='value' value ''' 01 12 23 ... 9798 9899 99100 Name:value,Length:100,dtype:int64 ''' #################展开标签################# importitertools #index的笛卡尔乘积。注意:高维在前,低维在后 prod=itertools.product(index3,index2,index1) #转换为DataFrame prod=pd.DataFrame([xforxinprod]) prod.columns=['C','B','A'] prod.T ''' 0123456789...90919293949596\ CC1C1C1C1C1C1C1C1C1C1...C2C2C2C2C2C2C2 BB1B1B1B1B1B1B1B1B1B1...B5B5B5B5B5B5B5 AA1A2A3A4A5A6A7A8A9A10...A1A2A3A4A5A6A7 979899 CC2C2C2 BB5B5B5 AA8A9A10 [3rowsx100columns] ''' #################最终数据################# #合并成一个DataFrame pd.concat([prod,value],axis=1) ''' CBAvalue 0C1B1A11 1C1B1A22 2C1B1A33 3C1B1A44 4C1B1A55 5C1B1A66 6C1B1A77 7C1B1A88 8C1B1A99 9C1B1A1010 10C1B2A111 11C1B2A212 12C1B2A313 13C1B2A414 14C1B2A515 15C1B2A616 16C1B2A717 17C1B2A818 18C1B2A919 19C1B2A1020 20C1B3A121 21C1B3A222 22C1B3A323 23C1B3A424 24C1B3A525 25C1B3A626 26C1B3A727 27C1B3A828 28C1B3A929 29C1B3A1030 ............ 70C2B3A171 71C2B3A272 72C2B3A373 73C2B3A474 74C2B3A575 75C2B3A676 76C2B3A777 77C2B3A878 78C2B3A979 79C2B3A1080 80C2B4A181 81C2B4A282 82C2B4A383 83C2B4A484 84C2B4A585 85C2B4A686 86C2B4A787 87C2B4A888 88C2B4A989 89C2B4A1090 90C2B5A191 91C2B5A292 92C2B5A393 93C2B5A494 94C2B5A595 95C2B5A696 96C2B5A797 97C2B5A898 98C2B5A999 99C2B5A10100 [100rowsx4columns] '''
以上这篇Python实现把多维数组展开成DataFrame就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。