【发布时间】:2019-11-21 10:23:12
【问题描述】:
我正在尝试将存储为整数(yyyymmddHHMM 格式)的 pandas 数据帧的一列转换为时间戳。此列实际上是一个 pandas 数据框索引。考虑以下 MWE:
def get_digits(vector,first_digit,last_digit):
return (vector // 10**last_digit) % 10**(first_digit-last_digit)
data = {'timestamp':[201911200830,201807131820],'value':[1,2]}
df_t=pd.DataFrame(data)
例如获取年份和月份的操作:
df_t.timestamp.values // 10**10
get_digits(df_t.timestamp.values,10,8)
产生array([2019, 2018]) 和array([11, 7])。
奇怪的是,pd.Timestamp 似乎不支持数组作为输入,因为该操作仅适用于单个输入,如下所示:
pd.Timestamp(df_t.timestamp.values[0] // 10**8, get_digits(df_t.timestamp.values[0],8,6), get_digits(df_t.timestamp.values[0],6,4), get_digits(df_t.timestamp.values[0],4,2), get_digits(df_t.timestamp.values[0],2,0))
如我所料,结果为Timestamp('2019-11-20 08:30:00')。但是,如果我删除 [0] 索引,它会在 MWE 中给我以下错误:
TypeError:无法将类型类“numpy.ndarray”的输入 [[2019 2018]] 转换为时间戳
关于如何勾勒此错误的任何想法?
【问题讨论】: