После прочтения my_csv_file.csv
необходимо добавить соответствующие столбцы ввода / вывода, создать столбец отметки времени и группу по отметке времени на часовом уровне:
import pandas as pd
# Read file, no header!
df = pd.read_csv('my_csv_file.csv', header=None)
n_cols = len(df.columns)
# Sum all inputs and outputs
df['in'] = df.iloc[:,range(2,n_cols ,2)].sum(axis=1)
df['out'] = df.iloc[:,range(3,n_cols ,2)].sum(axis=1)
df = df.drop(columns=range(2,n_cols))
# Create a timestamp with the date and hour
df['timestamp'] = pd.to_datetime((df[0] + ' ' + df[1]))
df =df.drop(columns=[0,1])
# Groupby same hour and same date and sum
df_grouped = df.groupby([df.timestamp.dt.date, df.timestamp.dt.hour], group_keys=False).sum()
# Prettify the output
df_grouped.index.names = ['date', 'hour']
df_grouped = df_grouped.reset_index()
# date hour in out
#0 2020-12-01 16 0 2
#1 2020-12-01 17 1 1
#2 2020-12-01 18 1 0
Примечание: для воссоздать данные, которые я использовал для примера, вы можете использовать эту строку кода (вместо read_csv
)
df = pd.DataFrame({0: {0: '12/01/2020', 1: '12/01/2020', 2: '12/01/2020', 3: '12/01/2020', 4: '12/01/2020', 5: '12/01/2020', 6: '12/01/2020', 7: '12/01/2020', 8: '12/01/2020', 9: '12/01/2020'}, 1: {0: '16:02:00', 1: '16:03:00', 2: '16:04:00', 3: '16:05:00', 4: '17:06:00', 5: '17:07:06', 6: '17:08:00', 7: '17:09:01', 8: '18:10:00', 9: '18:11:00'}, 2: {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 1, 6: 0, 7: 0, 8: 0, 9: 1}, 3: {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}, 4: {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}, 5: {0: 2, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}, 6: {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}, 7: {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}, 8: {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0}, 9: {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 1, 8: 0, 9: 0}})