从 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 是可选的)
我有一个 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 是可选的)