Python 从数据FRMAE的开头有条件地删除行

Python 从数据FRMAE的开头有条件地删除行,python,pandas,Python,Pandas,我有一些按时间顺序排列的数据。索引是具有分钟级分辨率的日期时间。我将小时存储在一个名为“小时”的列中,将分钟存储在一个名为“分钟”的列中。我想修剪数据的开头,以便始终以00:00开始。传入的数据集可能以一天中的某个随机分钟开始。数据由多天(1000秒)的分钟级别行组成。所以失去第一天的部分时间不是问题。我只需要数据在午夜开始 我正在尝试使用以下代码来修剪数据帧,使其始终以00:00开始 def clean_start_data (df): for index, row in df.iterrow

我有一些按时间顺序排列的数据。索引是具有分钟级分辨率的日期时间。我将小时存储在一个名为“小时”的列中,将分钟存储在一个名为“分钟”的列中。我想修剪数据的开头,以便始终以00:00开始。传入的数据集可能以一天中的某个随机分钟开始。数据由多天(1000秒)的分钟级别行组成。所以失去第一天的部分时间不是问题。我只需要数据在午夜开始

我正在尝试使用以下代码来修剪数据帧,使其始终以00:00开始

def clean_start_data (df):
for index, row in df.iterrows():
    if row['hour'] > 0 or row['minute'] > 0:
        df.drop(index, inplace=True)
    else:
        break
return df
但是我被卡住了,我的内核变得没有响应

我做错了什么

编辑

我的数据是这样的

h = 9 m = 0 data = blah
h = 9 m = 1 data = blahhbadf
h = 9 m = 2 data = somethning_else
....
h = 0 m = 0 data = something. // new day...I want to start here and remove all rows above
数据覆盖了大约400天。当h=23 m=59时,h回到0,分钟回到0


我想从数据中删除在新的一天开始之前出现的时间条目。我希望我的数据从h=0开始,m=0

我认为这只是一个简单的布尔过滤器

df.loc[(df.hour==0)|(df.minute==0)]
修复你的代码

def clean_start_data (df):
    l=[]
    for index, row in df.iterrows():
        if row['hour'] > 0 or row['minute'] > 0:
            l.append(index)
        else:
            break
    return  df.drop(l, inplace=True)

嗨,我试过使用简单的布尔过滤器,但没有用。我已经编辑了我的原始问题,以试图使事情更清楚。重要的是,我想删除所有内容,直到我们第一次达到00:00,然后我希望函数停止。我不想再删除任何条目。我所做的就是确保阵列在00:00开始。布尔过滤器查看整个数据集。@Vazzyb您可以执行
df.loc[((df.hour==0)|(df.minute==0)).idxmax():]
有效的是df[df[(df.hour==0)和(df.minute==0)]。索引[0]:]@Vazzyb您的解决方案仅适用于第一行不是00:00,请考虑是否有多行不是00:00在头部