【发布时间】:2021-07-20 21:55:24
【问题描述】:
我想使用 Python pandas 将每天的 48 个交易时段转换为一天中它们发生的时间。交易时段 1 = 午夜,2 = 12.30am,3 = 1am,等等
我的 MWE 是
import numpy as np
import pandas as pd
import datetime
from datetime import date, datetime, time, timedelta
import pyarrow as pa
import pyarrow.parquet as pq
# my dataset - 2 days
df = pd.DataFrame()
df['date'] = pd.to_datetime(['2020-10-21']*48+['2020-10-22']*48, format='%Y-%m-%d')
trp = np.arange(1,49,1) # 48 trading periods in each day
df['tp'] = pd.DataFrame(np.concatenate((trp,trp)))
df = df.set_index('date')
midnight = df.index.time
T = df.tp.values
tstep = pd.Timedelta(minutes=(30*(T-1)))
df['time'] = pd.to_datetime(midnight + tstep)
#for jj in range(len(demand)):
# T = df.tp.values[jj]
# tstep = pd.Timedelta(minutes=(30*(T-1)))
# time0 = midnight + pd.to_datetime(tstep)
# #df['time'] = df['time'].append(tstep)
df.head()
我不断收到错误
TypeError Traceback (most recent call last)
<ipython-input-122-0b6c5efa5538> in <module>()
8
9 T = df.tp.values
---> 10 tstep = pd.Timedelta(minutes=(30*(T-1)))
11 df['time'] = pd.to_datetime(midnight + tstep)
12
pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.Timedelta.__new__()
pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas._to_py_int_float()
TypeError: Invalid type <class 'numpy.ndarray'>. Must be int or float.
我不确定如何解决这个问题,即使在尝试了 for 循环之后也是如此。
【问题讨论】:
-
请显示堆栈跟踪
标签: python pandas dataframe time