Python 用Pandas切片多索引数据
我已将csv作为多索引数据帧导入。以下是数据的模型: df=pd.read_csvcoura2.csv,index_col=[0,2] 打印df ID课程列表 12345室内环境DESN10000 呈现和呈现技能DESN20065 照明设备DESN20025 22345图纸技术DESN10016 颜色理论DESN14049 饰面和可持续性问题DESN12758 照明设备DESN20025 32345窗户处理和软装饰DESN27370 42345 CADD INFO16859简介 DESN10065的起草原则 图纸技术DESN10016 设计基础DESN15436 颜色理论DESN14049 室内环境设计10000 图纸编号:DESN10123 纺织品和应用DESN10199 饰面和可持续性问题DESN12758 我可以使用.xs通过标签轻松地对其进行切片-例如: 已选择=df.xs 12345,级别='ID' 打印所选内容 > 但我要做的是逐步遍历数据帧,并按ID对每个课程块执行操作。实际数据中的ID值是相当随机的整数,按升序排序 df.index显示: 指数 多索引级别=[[12345223453234542345],[u‘色彩理论’、u‘色彩理论’、u‘绘图’、u‘绘图技术’、u‘饰面与可持续性问题’、u‘室内环境’、u‘CADD简介’、u‘照明’、u‘绘图原理’、u‘渲染与呈现技巧’、u‘纺织品与应用’、u‘设计基础’、u‘窗户处理与软装饰’], 标签=[[0,0,0,1,1,1,1,2,3,3,3,3,3,3,3,3],[5,9,7,3,1,4,7,12,6,8,3,11,0,5,2,10,4], 名称=[u'ID',u'Course List'] 在我看来,我应该能够使用第一个索引标签在数据帧中递增。也就是说,获取标签0、1、2、3的所有过程,…但看起来.xs不会按标签进行切片Python 用Pandas切片多索引数据,python,csv,pandas,indexing,slice,Python,Csv,Pandas,Indexing,Slice,我已将csv作为多索引数据帧导入。以下是数据的模型: df=pd.read_csvcoura2.csv,index_col=[0,2] 打印df ID课程列表 12345室内环境DESN10000 呈现和呈现技能DESN20065 照明设备DESN20025 22345图纸技术DESN10016 颜色理论DESN14049 饰面和可持续性问题DESN12758 照明设备DESN20025 32345窗户处理和软装饰DESN27370 42345 CADD INFO16859简介 DESN1006
我遗漏了什么吗?因此,可能有更有效的方法来做到这一点,这取决于您试图对数据执行的操作。但是,有两种方法会立即浮现在脑海中:
for id_label in df.index.levels[0]:
some_func(df.xs(id_label, level='ID'))
及
取决于您是要对整个组进行操作,还是对其中的每一行进行操作。我想将切片与课程的静态列表进行比较,因此我认为第一种方法看起来很有希望。非常感谢。请尝试“df.groupbylevel='ID'.applyfunc',请参见此处:
[17 rows x 1 columns]
COURSE
Course List
Interior Environments DESN10000
Rendering & Present Skills DESN20065
Lighting DESN20025
[3 rows x 1 columns]
for id_label in df.index.levels[0]:
some_func(df.xs(id_label, level='ID'))
for id_label in df.index.levels[0]:
df.xs(id_label, level='ID').apply(some_func, axis=1)