Ежемесячные агрегированные значения, pandas датафрейм - PullRequest
0 голосов
/ 25 февраля 2020

Пример CSV-данных, в котором первый столбец представляет собой метку времени (дата + время):

2018-01-01 10:00:00,23,43
2018-01-02 11:00:00,34,35
2018-01-05 12:00:00,25,4
2018-01-10 15:00:00,22,96
2018-01-01 18:00:00,24,53
2018-03-01 10:00:00,94,98
2018-04-20 10:00:00,90,9
2018-04-10 10:00:00,45,51
2018-01-01 10:00:00,74,44
2018-12-01 10:00:00,76,87
2018-11-01 10:00:00,76,87
2018-12-12 10:00:00,87,90

Я уже написал несколько кодов для выполнения задачи по ежемесячным агрегированным значениям, ожидая, пока кто-нибудь даст мне несколько предложений.

Спасибо, @moys, в любом случае!

import pandas as pd

df = pd.read_csv('Sample.txt', header=None, names = ['Timestamp', 'Value 1', 'Value 2'])
df1['Timestamp'] = pd.to_datetime(df1['Timestamp'])
df1['Monthly'] = df1['Timestamp'].dt.to_period('M')
grouper = pd.Grouper(key='Monthly')
df2 = df1.groupby(grouper)['Value 1', 'Value 2'].sum().reset_index()

Вывод:

Monthly Value 1 Value 2
0   2018-01 202 275
1   2018-03 94  98
2   2018-04 135 60
3   2018-12 163 177
4   2018-11 76  87

Что если есть набор данных с большим количеством столбцов, как мотивировать мой код, чтобы он автоматически работал с набором данных, который имеет больше столбцов?

2018-02-01 10:00:00,23,43,32
2018-02-02 11:00:00,34,35,43
2018-03-05 12:00:00,25,4,43
2018-02-10 15:00:00,22,96,24
2018-05-01 18:00:00,24,53,98
2018-02-01 10:00:00,94,98,32
2018-02-20 10:00:00,90,9,24
2018-07-10 10:00:00,45,51,32
2018-01-01 10:00:00,74,44,34
2018-12-04 10:00:00,76,87,53
2018-12-02 10:00:00,76,87,21
2018-12-12 10:00:00,87,90,98

1 Ответ

1 голос
/ 25 февраля 2020

Вы можете сделать что-то вроде ниже

df.groupby(pd.to_datetime(df['date']).dt.month).sum().reset_index()

Вывод Здесь в столбце «дата» указывается номер месяца.

  date  val1    val2
0   1   202     275
1   3   94      98
2   4   135     60
3   11  76      87
4   12  163     177
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...