Округление часов во фрейме данных с использованием Python -Pandas - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть фрейм данных, который я создал в python, который содержит данные о растениях, которые измерялись один раз в час. Проблема в том, что первоначальное намерение состояло в том, чтобы измерять их в один и тот же час каждый день - 10:00, 11: 00, 12: 00 ... но в реальной жизни растения измерялись с небольшим по времени, так что теперь у меня естьслишком много строк.

enter image description here

Как вы можете видеть здесь, установка D10A была измерена один день в 10:02, один день в 10:09, 10: 14, 10: 17 ...... Я хочу, чтобы все они были под "10:00", а затем имели меньше строк.

Моя конечная цель - иметь одну и ту же таблицуно с округленными часами вместо точного времени

1 Ответ

0 голосов
/ 05 ноября 2019
# 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

Upd: только для округления часов, вот код:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...