Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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_Python_Pandas - Fatal编程技术网

使用重复行选择熊猫中的数据范围,Python

使用重复行选择熊猫中的数据范围,Python,python,pandas,Python,Pandas,我想从已经连接到数据帧中的数据中提取数据,数据帧中有一个类似的模式在整个过程中重复 我要提取的数据将出现在数据帧的整个索引中,每次都以“Staff”开始,以“Total Staff”结束,但当然loc不处理重复数据,我的目标是提取Staff和Total Staff之间的每次数据 我希望使用中概述的代码,例如isin函数,但是在尝试从重复行提取时肯定会出现相同的问题 使用loc使用重复数据提取范围是否有解决方法或替代方法 显示我的loc功能:frame.loc([“Staff”:“Total St

我想从已经连接到数据帧中的数据中提取数据,数据帧中有一个类似的模式在整个过程中重复

我要提取的数据将出现在数据帧的整个索引中,每次都以“Staff”开始,以“Total Staff”结束,但当然loc不处理重复数据,我的目标是提取Staff和Total Staff之间的每次数据

我希望使用中概述的代码,例如isin函数,但是在尝试从重复行提取时肯定会出现相同的问题

使用loc使用重复数据提取范围是否有解决方法或替代方法

显示我的loc功能:frame.loc([“Staff”:“Total Staff”])


假设您有一列只有两个值:“Staff”和“Total Staff”。假设“总员工数”是每个组的分隔符,因此:

Staff, Staff, Staff, Total Staff, Staff, Total Staff
然后
delim=(ser=“全体员工”).cumsum()

然后
groups=delim.shift().fillna(0).astype(int)

现在,您可以抓取以下部分:

for ii in range(groups[-1] + 1):
    section = df[groups == ii]

聪明的解决方案!谢谢你的意见。如果价值观超过员工和员工总数,又如何?您如何将员工作为起点?@Iwan:请提供样本数据。你可以把它编辑成问题。为什么不试试for循环呢?只需保留一个布尔值“我现在在一个组中”,然后计算你在哪个组中。标记组,类似于我所做的,但没有矢量化。
0, 0, 0, 0, 1, 1
for ii in range(groups[-1] + 1):
    section = df[groups == ii]