我正在分析以非标准间隔拍摄的气象数据,因此时间/日期条目并非都是连续的。已使用以下命令将csv文件读入pandas数据框:
df4=pd.read_csv(datafilenew,parse_dates[1],infer_datetime_format=True,na_values=['M'])
我想选择连续的数据块,例如每组至少5行具有连续的时间/日期值。 Here is a screenshot of a section of data。我想从这个例子中选择2011-09-10中的所有条目,然后继续扫描其余的数据并选择其他连续的行集。
有一种简单的方法可以做到这一点,因为我完全不知所措。感谢。
答案 0 :(得分:0)
否则你可能会使用pandas diff()
方法(see here)
并使用pandas where()
方法(see here)来查找diff(timeseries)是您要查找的timedelta的索引
答案 1 :(得分:0)
你可以试试这个(假设您的数据帧已经排序):
m = df4.groupby([df4['TimeDate'].dt.date])['Direction'].transform('size') >= 5 # mask
df4 = df4.loc[m] # Apply mask
完整示例:
import pandas as pd
data1 = '''\
TimeDate,Direction
2010-01-05 10:00,2
2010-01-05 11:00,3
2010-01-05 12:00,4
2010-01-05 13:00,5
2010-01-05 14:00,6
2010-01-06 13:00,7'''
df4 = pd.read_csv(pd.compat.StringIO(data1), sep=',', parse_dates=['TimeDate'])
df4[df4.groupby([df4['TimeDate'].dt.date])['Direction'].transform('size') >= 5]
print(df4)
评论中建议或,如果您想为每个数据框执行某些操作,您只需执行此操作:
for ind, dfx in df4.groupby([df4['TimeDate'].dt.date]):
if len(dfx) >= 5:
# Apply your logic here for subdataframe with len >= 5
print(dfx)
else:
# Apply logic for skipped subdataframes
print('skip')