Pandas层次化索引
-
创建多层索引
-
隐式构造
-
显式构造
-
使用数组
-
df = DataFrame( data=np.random.randint(0,100,size=(6,6)), index=pd.MultiIndex.from_arrays([['一班','一班','一班','二班','二班','二班'],['张三','李四','王五','赵六','田七','孙八']]), columns=[['期中','期中','期中','期末','期末','期末'],['语文','数学','英语','政治','历史','地理']] )
-
-
使用tuple
-
df = DataFrame( data=np.random.randint(0,100,size=(6,6)), index=pd.MultiIndex.from_tuples( ( ('一班','张三'),('一班','李四'),('一班','王五'), ('二班','赵六'),('二班','田七'),('二班','孙八'), ) ), columns=[['期中','期中','期中','期末','期末','期末'],['语文','数学','英语','政治','历史','地理']] )
-
-
使用product
-
df = DataFrame( data=np.random.randint(0,100,size=(6,6)), # 笛卡尔积 index=pd.MultiIndex.from_product([['一班','二班'],['张三','李四','王五']]), columns=pd.MultiIndex.from_product([['期中','期末'],['语文','数学','英语']]) )
-
-
-
Series也可以创建多层次索引
-
index=[['一班','一班','一班','二班','二班','二班'],['张三','李四','王五','赵六','田七','孙八']] s=Series(data=np.random.randint(0,100,size=6),index=index)
-
-
多层列索引
- 除了行索引index,列索引columns也能用同样的方法创建多层索引
-
多层索引对象的索引与切片操作
- Series的操作
- DataFrame的操作
- 索引
- 可以直接使用列名称来进行列索引
- 使用索引:优先考虑列索引
- df['期末']
- df['期末']['英语']
- df['期末','英语']
- df[('期末','英语')]
- 建议使用
- df.期末.英语
- df[('期末','英语')][2]
- 行索引(必须加loc或iloc)
- df.loc[('一班','王五'),('期末','英语')]
- 建议使用
- df.loc[('一班','王五'),('期末','英语')]
- 切片
- 建议使用隐式切片
- 默认行切片
- df[1:4]
- df.iloc[1:4]
- df['一班':'二班']
- df.loc['一班':'二班']
- df[('一班','张三'): ('二班','张三')]
- df.loc[('一班','张三'): ('二班','张三')]
- 列切片
- df.iloc[:,1:4]
- 索引
-
索引的堆(stack,行列索引切换)
-
聚合操作
- 需要指定axis
- axis是列索引的层级,level是行索引的层级
- df.sum()
- 默认axis=0
- df.sum(axis=0)
- 对每一列的所有行求和
- df.sum(axis=1)
- 对每一行的所有列求和
- df.sum(level=0)
- 计算一班和二班(最外层)的成绩和
- df.sum(level=1)
- 分别计算张三,李四,王五(第二层)的成绩和
- df.max(axis=1, level=1)[:2]
- 计算各科目张三李四的最高分
-
Pandas的拼接操作
- 使用pd.concat()级联
- 使用append()函数添加
- 使用pd.merge()合并
- 概述
- 一对一合并
- 多对一合并
- pd.merge(df1,df2)
- df1.merge(df2)
- 多对多合并
- pd.merge(df1,df2)
- key的规范化
- 使用on=显式指定哪一列为key,当有多个key相同时使用
- df1.merge(df2,on='age')
- 使用left_on和right_on指定左右两边的列作为key,当左右两边的key都不想等时使用
- df1.merge(df2,left_on='id',right_on='id2')
- 当左边的列和右边的index相同的时候,使用right_index=True
- df1.merge(df2,left_on='id',right_index=True)
- 内合并与外合并
- 使用on=显式指定哪一列为key,当有多个key相同时使用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。