首页 > 解决方案 > 如何在python中按时间聚合值

问题描述

我想按时间对值求和。
时间纪元是 10 秒,我想使它成为 1 分钟。

给出以下数据。

       Date       Time      X
0   2017-10-15  12:50:00    10
1   2017-10-15  12:50:10    20
2   2017-10-15  12:50:20    30
3   2017-10-15  12:50:30    20
4   2017-10-15  12:50:40    10
5   2017-10-15  12:50:50    10

我想让它像这样。

       Date       Time      X
0   2017-10-15  12:50:00    100
1   2017-10-15  12:51:00    300

我用熊猫阅读了这个文件。
所以 Time 变量的类型是pandas.core.series.Series.
我尝试使用df.resample(),但它没有用。
我能在这里做什么??
谢谢你的帮助。

标签: pythonpandas

解决方案


您可以DatetimeIndex先创建:

df.index = pd.to_datetime(df.pop('Date')) + pd.to_timedelta(df.pop('Time'))
print (df)
                      X
2017-10-15 12:50:00  10
2017-10-15 12:50:10  20
2017-10-15 12:50:20  30
2017-10-15 12:50:30  20
2017-10-15 12:50:40  10
2017-10-15 12:50:50  10

然后工作resample得很好:

df1 = df.resample('1T').sum()
print (df1)
                       X
2017-10-15 12:50:00  100

对于DatetimeIndex使用的列:

df1.index = pd.MultiIndex.from_arrays([df1.index.date, df1.index.time], names=('Date','Time'))

df1 = df1.reset_index()
print (df1)
        Date      Time    X
0 2017-10-15  12:50:00  100

推荐阅读