轴向连接和层次化索引
2018-01-27 14:47
489 查看
# encoding=utf-8 import numpy as np import pandas as pd # 轴向连接 # 1 arr = np.arange(12).reshape((3, 4)) print 'arr:=\n', arr arr_concatenate_arr = np.concatenate([arr, arr], axis=1) # 2 s1 = pd.Series([0, 1], index=['a', 'b']) s2 = pd.Series([2, 3, 4], index=['c', 'd', 'e']) s3 = pd.Series([5, 6], index=['f', 'g']) pd_s123 = pd.concat([s1, s2, s3], axis=1) print 'pd_s123:=\n', pd_s123 s4 = pd.concat([s1 * 5, s3]) print 's4:=\n', s4 s1_concat_s4 = pd.concat([s1, s4], axis=1) print 's1_concat_s4:=\n', s1_concat_s4 # 3 result = pd.concat([s1, s2, s3], keys=['one', 'two', 'three']) print 'result:=\n', result unstackresult = result.unstack() print 'unstackresult:=\n', unstackresult # 4 result = pd.concat([s1, s2, s3], axis=0, keys=['one', 'two', 'three']) print 'result:=\n', result df1 = pd.DataFrame(np.arange(6).reshape(3, 2), index=['a', 'b', 'c'], columns=['one', 'two'] ) df2 = pd.DataFrame(5 + np.arange(4).reshape(2, 2), index=['a', 'c'], columns=['three', 'four'] ) print 'df1:=\n', df1 print 'df2:=\n', df2 # df1_concat_df2 = pd.concat([df1, df2], axis=1, keys=['level1', 'level2']) # print 'df1_concat_df2:=\n', df1_concat_df2 # df1_concat_df2 = pd.concat({'level1': df1, 'level2': df2}, axis=1) # print 'df1_concat_df2:=\n', df1_concat_df2 df1_concat_df2 = pd.concat([df1, df2], axis=1, keys=['level1', 'level2'], names=['upper', 'lower'] ) print 'df1_concat_df2:=\n', df1_concat_df2 # 5 df1 = pd.DataFrame(np.random.randn(3, 4), columns=['a', 'b', 'c', 'd']) df2 = pd.DataFrame(np.random.randn(2, 3), columns=['b', 'd', 'a']) print 'df1:=\n', df1 print 'df2:=\n', df2 df1_concat_df2 = pd.concat([df1, df2], ignore_index=True) print 'df1_concat_df2:=\n', df1_concat_df2 df1_concat_df2 = pd.concat([df1, df2], ignore_index=False) print 'df1_concat_df2:=\n', df1_concat_df2 ## # 合并重叠数据 # 1 a = pd.Series( [np.nan, 2.5, np.nan, 3.5, 4.5, np.nan], index=['f', 'e', 'd', 'c', 'b', 'a'] ) b = pd.Series( np.arange(len(a), dtype=np.float64), index=['f', 'e', 'd', 'c', 'b', 'a'] ) b[-1] = np.nan print 'a:=\n', a print 'b:=\n', b # print 'np.nan:=\n', np.nan # print 'np.where(pd.isnull(a), b, a):=\n', np.where(pd.isnull(a), b, a) # 2 # 数据填补 print 'b[:-2].combine_first(a[2:]):=\n', b[:-2].combine_first(a[2:]) # 3 df1 = pd.DataFrame( { 'a': [1., np.nan, 5., np.nan], 'b': [np.nan, 2., np.nan, 6.], 'c': range(2, 18, 4) }) df2 = pd.DataFrame( { 'a': [5., 4., np.nan, 3., 7.], 'b': [np.nan, 3., 4., 6., 8.] } ) df1.combine_first(df2) # ## 重塑层次化索引 # ---stack:将数据的列"旋转" 为行 # ---Unstack: 将数据的行"旋转"为列 data = pd.DataFrame(np.arange(6).reshape((2, 3)), index=pd.Index(['Ohio', 'Colorado'], name='state'), columns=pd.Index(['one', 'two', 'three'], name='number') ) print 'data:=\n', data result = data.stack() print 'result:=\n', result print 'result.unstack():=\n', result.unstack() print 'result.unstack(0):=\n', result.unstack(0) print 'result.unstack(\'state\')', result.unstack('state') # 2 s1 = pd.Series([0, 1, 2, 3], index=['a', 'b', 'c', 'd']) s2 = pd.Series([4, 5, 6], index=['c', 'd', 'e']) data2 = pd.concat([s1, s2], keys=['one', 'two']) print 'data2:=\n', data2 print 'data2.unstack():=\n', data2.unstack() print 'data2.unstack().stack():=\n', data2.unstack().stack() # 不去除缺失值 print 'data2.unstack().stack(dropna=False):=\n', data2.unstack().stack(dropna=False) # 3 print 'result:=\n', result df = pd.DataFrame( { 'left': result, 'right': result + 5 }, columns=pd.Index(['left', 'right'], name='side') ) print 'df:=\n', df print 'df.unstack(\'state\'):=\n', df.unstack('state') print 'df.unstack(\'state\').stack(\'side\'):=\n', df.unstack('state').stack('side') print 'test'
相关文章推荐
- linux下实现shell脚本自动连接mongodb数据库并创建索引
- 事务,索引,连接查询,权限设计(面试问题)
- MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引
- 在MySQL中如何为连接添加索引
- 左连接为什么无法使用索引
- 详解索引连接类型
- nexus私服(无法连接外网)索引更新方法
- sql优化、索引的建立和运用以及多表连接建索引的拙劣见解
- 索引超出了数组界限(Microsoft.SqlServer.Smo) SSMS连接远程SQL Server服务器是很方便的。 昨天我用SQL Server 2008 SSMS连接SQL Server
- 利用Python进行数据分析(11) pandas基础: 层次化索引
- 关于mysql 使用or连接索引失效引起的慢查询优化的初步实践
- Mysql 聚合函数,内外连接 , 视图 ,索引,触发器, 存储过程
- SQLserver基础--连接查询、联合查询、索引
- MySQL多表连接过程中自动创建索引一例:
- Pandas索引&层次化索引
- 索引优点(3):加快表连接的速度(对hash关联算法的影响)
- MyReport演示下载连接和相关文章索引
- phoenix全局索引/本地索引测试以及hive连接教程
- 索引超出了数组界限(Microsoft.SqlServer.Smo) SSMS连接远程SQL Server服务器是很方便的。 昨天我用SQL Server 2008 SSMS连接SQL Server
- solr连接数据库创建索引