python - 用 pandas 计算每天的值总数

标签 python python-3.x pandas datetime

我有以下数据框

       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

我想计算每天“TOTAL COUNTS”的总和。所以我希望数据框看起来像这样:

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

我读到我必须将此数据帧的索引设置为“日期时间”索引,然后使用 .resample,但我不确定该怎么做。

最佳答案

如果 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

关于python - 用 pandas 计算每天的值总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52575694/

相关文章:

python - 如何提供错误检查以确保用户输入仅允许字母并在键入数字时提供循环错误消息?

python - 如何用更短和自定义的内容有选择地覆盖 python 帮助(MYclass)中的文本?

python - Pandas :如何过滤数据帧中至少出现 n 次的重复项目的数据帧

python - 使用 pandas GroupBy 获取每个组的统计数据(例如计数、平均值等)?

Python datetime 工作日数字代码 - 动态?

Python 的 easy_install 和自定义头文件/库位置

python - 从 Linux RHEL 卸载 Python3.5

python - 如何使用 Format 在 Python 中连接字符串?

python-3.x - 如何在我的自定义 python 包中包含自动下载?

python - Pandas :根据开始/结束日期聚合