我按时间顺序排列了一些数据。索引是具有分钟级别分辨率的日期时间。我将小时存储在名为minute的小时和分钟列中。我想修剪数据的开头,以便始终以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开始。
答案 0 :(得分:1)
我认为这只是一个简单的布尔过滤器。
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)