我有一个时间序列,每一个都是这样的:

Time Volume every minute
2023-05-25T00:00:00Z 284
2023-05-25T00:01:00Z 421
. .
. .
2023-05-27T23:58:00Z 894
2023-05-27T23:59:00Z 357

我必须通过迭代Time列来创建新的CSV,找到唯一的日期,并每分钟创建具有相应体积值的新列.例如,所需输出:

Date min1 min2 ... min1440
2023-05-25 284 421 ... 578
2023-05-26 512 645 ... 114
2023-05-27 894 357 ... 765

我能弄到独一无二的日期,但在那之后我就一无所知了.请找到我的示例代码:

import pandas as pd

train_data = pd.read_csv('date25to30.csv')

print(pd.to_datetime(train_data['time']).dt.date.unique())

推荐答案

首先,为将Time列转换为日期时间添加参数parse_datesread_csv:

train_data = pd.read_csv('date25to30.csv', parse_dates=['Time'])

然后,将HH:MM:SS转换为时间增量,再除以to_timedeltaSeries.dt.total_seconds,再除以60,再加上1,从而创建分钟,因为Python 从0开始计算:

minutes = (pd.to_timedelta(train_data['Time'].dt.strftime('%H:%M:%S'))
             .dt.total_seconds()
             .div(60)
             .astype(int)
             .add(1))

最后一次传球到DataFrame.pivot_table分,DataFrame.add_prefix分:

df = (train_data.pivot_table(index=train_data['Time'].dt.date,
                             columns=minutes,
                             values='Volume',
                             aggfunc='sum').add_prefix('min'))
print (df)
Time         min1   min2  min1439  min1440
Time                                      
2023-05-25  284.0  421.0      NaN      NaN
2023-05-27    NaN    NaN    894.0    357.0

Python相关问答推荐

aiohTTP与pytest的奇怪行为

Python-Polars:如何用两个值的平均值填充NA?

手动为pandas中的列上色

Odoo onchange for invoice_Status of sale事件.订单未触发

如何将新的SQL服务器功能映射到SQL Alchemy的ORM

如何使用PyTest根据self 模拟具有副作用的属性

Python -根据另一个数据框中的列编辑和替换数据框中的列值

添加包含中具有任何值的其他列的计数的列

使用pandas、matplotlib和Yearbox绘制时显示错误的年份

理解Python的二分库:澄清bisect_left的使用

在Pandas DataFrame操作中用链接替换'方法的更有效方法

图像 pyramid .难以创建所需的合成图像

如何制作10,000年及以后的日期时间对象?

如何列举Pandigital Prime Set

无法定位元素错误404

Python中绕y轴曲线的旋转

海上重叠直方图

形状弃用警告与组合多边形和多边形如何解决

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

python中的解释会在后台调用函数吗?