使用Python -Pandas在数据框中舍入小时

我有一个用python创建的数据框,其中包含有关每1小时测量一次的植物的数据。问题是最初的意图是每天在每天的同一时间进行测量-10:00、11:00、12:00 ... 但是在现实生活中,植物的测量时间不同,所以现在我的行​​太多了。

使用Python -Pandas在数据框中舍入小时

正如您在此处看到的,工厂D10A在一天的10:02,一天的10:09、10:14、10:17进行了测量... 我希望所有这些都在“ 10:00”以下,然后减少行数。

我的最终目标是拥有一张相同的桌子,但四舍五入的时间而不是确切的时间

dogliu2009 回答:使用Python -Pandas在数据框中舍入小时

# 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
本文链接:https://www.f2er.com/3160373.html

大家都在问