我有一个用python创建的数据框,其中包含有关每1小时测量一次的植物的数据。问题是最初的意图是每天在每天的同一时间进行测量-10:00、11:00、12:00 ... 但是在现实生活中,植物的测量时间不同,所以现在我的行太多了。
正如您在此处看到的,工厂D10A在一天的10:02,一天的10:09、10:14、10:17进行了测量... 我希望所有这些都在“ 10:00”以下,然后减少行数。
我的最终目标是拥有一张相同的桌子,但四舍五入的时间而不是确切的时间
# here is the piece of your dataframe:
6/17/2019 6/18/2019
plant Hour
D10A 10:02 NaN NaN
10:09 NaN 0.33
10:14 NaN NaN
10:17 0.777 NaN
10:19 NaN NaN
col = df.columns
df = df.reset_index()
df['hr'] = pd.to_datetime(df['Hour']).apply(lambda x: x.hour)
df.fillna(0).groupby(['plant','hr'])[col].max()
Out[1]:
6/17/2019 6/18/2019
plant hr
D10A 10 0.777 0.33
col = df.columns
df = df.reset_index()
df['Hour'] = pd.to_datetime(df['Hour']).apply(lambda x: str(x.hour) + ':00')
df.set_index(['plant','Hour'])[col]
Out[2]:
6/17/2019 6/18/2019
plant Hour
D10A 10:00 NaN NaN
10:00 NaN 0.33
10:00 NaN NaN
10:00 0.777 NaN
10:00 NaN NaN