Python 熊猫的数据帧分裂问题,有什么想法吗?

Python 熊猫的数据帧分裂问题,有什么想法吗?,python,pandas,dataframe,split,Python,Pandas,Dataframe,Split,仪器的探头沿x方向前后循环,同时记录其位置并获取测量值。探头进行10个循环,比如从0到10 um(来回)并记录测量值。这给出了两列数据:位置和测量,其中位置编号循环0um->10um->0->10->0…,但这些编号有一个实验误差,因此它们都不同 我需要在每个周期开始时分割数据帧。有什么有趣的策略来解决这个问题吗?如果你需要更多信息,请告诉我。先谢谢你 下面是我所拥有的数据帧示例的链接。 在本例中,仪器进行了3个循环并生成数据(测量)。循环1=指数0-20;循环1=指数20-40;循环1=指数

仪器的探头沿x方向前后循环,同时记录其位置并获取测量值。探头进行10个循环,比如从0到10 um(来回)并记录测量值。这给出了两列数据:位置和测量,其中位置编号循环0um->10um->0->10->0…,但这些编号有一个实验误差,因此它们都不同

我需要在每个周期开始时分割数据帧。有什么有趣的策略来解决这个问题吗?如果你需要更多信息,请告诉我。先谢谢你

下面是我所拥有的数据帧示例的链接。

在本例中,仪器进行了3个循环并生成数据(测量)。循环1=指数0-20;循环1=指数20-40;循环1=指数40-60。我需要将这个数据帧分成3个数据帧,每个周期一个(索引0-20;索引20-40;索引40-60)


棘手的部分是,该方法需要“通用”,因为每个周期可以有不同数量的数据点(在本例中固定为20),不同的循环次数可以进行不同的实验。

我的目标是在循环次数减少后再次增加时保持跟踪,以确定循环次数。不是很优雅对不起

import pandas as pd

df = pd.read_excel('Example.xlsx')

def cycle(array):
    increasing = 1
    cycle_num = 0
    answer = []
    for ind,val in enumerate(array):
        try:
            if array[ind+1]-array[ind]>=0:
                if increasing==0:
                    cycle_num+=1
                increasing=1
                answer.append(cycle_num)
            else:
                answer.append(cycle_num)
                increasing=0
        except:
            answer.append(cycle_num)
    return answer


df['Cycle'] = cycle(df['Distance'].to_list())
grouped = df.groupby(['Cycle'])

print(grouped.get_group(0))
print(grouped.get_group(1))
print(grouped.get_group(2))

你能提供一个简单的例子来帮助我们理解这个问题吗?您可以利用这样一个事实,即测量是以离散的间隔进行的;i、 你将永远不会有两个相同的第一个数字相邻的间隔。出于这个原因,我只需查看距离列的第一个数字。数字0将允许您锁定周期的开始和结束。谢谢Andy,这是一个非常好的建议。你能提供一个我可以使用的例子或函数吗?它工作得很好,谢谢安迪!