python - 如何在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()
,但它没有用。
我能在这里做什么??
谢谢你的帮助。
解决方案
您可以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
推荐阅读
- spyder - 为每一行 Python IDLE 显示输出
- c# - 对异步 Main() 中的等待行为的困惑
- sql - 从不一起订购产品 p1 和 p2 的 SQL 客户
- php - 我怎样才能在哪里做多个?哪里不工作
- oracle - Jmeter,使用 Jmeter 读取 BLOB(其中包含一个 XML)
- azure - 将多个 Azure Functions 部署到同一个应用服务计划的定价(弹性高级计划 - EP1)
- android-studio - 我正在尝试运行颤振应用程序,但是在运行 gradle 任务“assemblyDebug”时会发生这种情况。我怎样才能克服这个
- assembly - 英特尔机器语言如何指定寄存器?
- node.js - TypeORM 未找到连接选项。可疑问题在于 dist 文件夹和 tsconfig
- c# - 使用 NSubstitute 和 Repository 模拟 DbContext 为空或 NotImplementedException