Рассчитать общее количество значений в день с пандами

1

У меня есть следующий фрейм данных

       UNIT  C/A   DATETIME                TOTAL COUNTs
       R248  HOO7  2018-03-03 03:00:00     139.0
                   2018-03-03 07:00:00     927.0
                   2018-03-04 11:00:00    1946.0
                   2018-03-05 07:00:00    1330.0
                   2018-03-05 11:00:00    2358.0

Я хочу рассчитать сумму "ВСЕГО COUNTS" за каждый день. Поэтому я хочу, чтобы dataframe выглядел следующим образом:

        UNIT  C/A   DATETIME     TOTAL COUNTs
       R248  HOO7  2018-03-03    1066
                   2018-03-04    1946
                   2018-03-05    3688

Я прочитал, что мне нужно установить индекс этого блока данных в индекс "datetime", а затем использовать.resample, но я не уверен, как это сделать.

  • 0
    Что такое print (df.info()) ?
Теги:
pandas
python-3.x
datetime

2 ответа

1
Лучший ответ

Используйте, если 3 уровня MultiIndex используют floor или date и суммарную sum:

dates = df.index.get_level_values('DATETIME').floor('D')

Или же:

dates = pd.Series(df.index.get_level_values('DATETIME').date, name='DATETIME', index=df.index)

Если столбец DATETIME:

dates = df['DATETIME'.dt.floor('D')
dates = df['DATETIME'].dt.date

df = df.groupby(['UNIT','C/A', dates]).sum().reset_index()
print (df)
   UNIT   C/A   DATETIME  TOTAL COUNTs
0  R248  HOO7 2018-03-03        1066.0
1  R248  HOO7 2018-03-04        1946.0
2  R248  HOO7 2018-03-05        3688.0

Решение с resample:

df = df.set_index('DATETIME').groupby(['UNIT','C/A']).resample('D').sum().reset_index()

Или же:

df = df.groupby(['UNIT','C/A', pd.Grouper(key='DATETIME', freq='D')]).sum().reset_index()

print (df)
   UNIT   C/A   DATETIME  TOTAL COUNTs
0  R248  HOO7 2018-03-03        1066.0
1  R248  HOO7 2018-03-04        1946.0
2  R248  HOO7 2018-03-05        3688.0
0

Попробуй это:

df.groupby(df.DATETIME.dt.date)["TOTAL COUNTs"].sum()

Ещё вопросы

Сообщество Overcoder
Наверх
Меню