首页 > 解决方案 > Pandas - 如何每 24 小时从一天中的特定时间分组?

问题描述

我的数据有两列 - 第一列是 TxnAmount,第二列是 TxnDate(它具有字符串格式的日期和时间)

 **TxnAmount**      **TxnDate**

 100                '2018-04-01 19:12:26'

 135                '2018-04-01 17:03:50'

 210                '2018-04-01 14:37:17'

 70                 '2018-04-02 12:24:49'

 250                '2018-04-02 09:56:18'

这是我的代码,可以求和(按天计算)

import pandas as pd
import numpy as np
df = pd.read_csv('File.csv')
df["TxnDate"] = pd.to_datetime(df["TxnDate"])
df.set_index(df["TxnDate"],inplace=True)
df['TxnAmount'].resample('D', how='sum')

但是,我需要总和是从 6:00 AM 到 6:00 AM 间隔。默认情况下,我假设的代码根据从 0:00 AM 到 0:00 的时间间隔求和。

标签: pythonpandas

解决方案


使用base参数resample

df.set_index("TxnDate").resample(rule='24H', closed='left', label='left', base=6).sum()

                     TxnAmount
TxnDate                       
2018-04-01 06:00:00        445
2018-04-02 06:00:00        320  

数据:

df = {'TxnAmount': {0: 100, 1: 135, 2: 210, 3: 70, 4: 250},
      'TxnDate': {0: Timestamp('2018-04-01 19:12:26'),
                  1: Timestamp('2018-04-01 17:03:50'),
                  2: Timestamp('2018-04-01 14:37:17'),
                  3: Timestamp('2018-04-02 12:24:49'),
                  4: Timestamp('2018-04-02 09:56:18')}}

推荐阅读