从 dask 数据帧整数列创建新的时间格式列

Creating a new time-format column from a dask dataframe integer column

我有一个 dask 数据框,其中有一列名为“hora”,是整数类型,我想创建其他时间格式的列。我在下一个例子中展示:

hora
10
17
22
19
14
hora time 
10   10:00:00

为此我正在尝试:

meta = ('time', 'datetime64[ns]')
df['hora'].map_partitions(dt.time, meta=meta).compute()

当我 运行 上面的代码抛出:

TypeError: cannot convert the series to <class 'int'>

但是我用系列 pandas 测试了同一个例子并且有效。

我在两种情况下都以相同的方式应用函数“dt.time”,错误是什么?

非常感谢

通过将 dt.time 传递给 map_partition,您可以有效地为数据帧的每个部分执行 dt.time(df)。您想要的是将函数应用于每个值。您可以执行以下任一操作:

ddf.assign(s2=ddf.hora.map(dt.time))

def mapper(df):
    df['s2'] = df.hora.apply(dt.time)
    return df

ddf.map_partitions(mapper)

(提供 dtype 是可选的)