Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用Pandas切片多索引数据_Python_Csv_Pandas_Indexing_Slice - Fatal编程技术网

Python 用Pandas切片多索引数据

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

我已将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不会按标签进行切片


我遗漏了什么吗?

因此,可能有更有效的方法来做到这一点,这取决于您试图对数据执行的操作。但是,有两种方法会立即浮现在脑海中:

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)