【问题标题】:Creating a new time-format column from a dask dataframe integer column从 dask 数据帧整数列创建新的时间格式列
【发布时间】:2021-11-23 16:57:11
【问题描述】:

我有 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”,错误是什么?

提前非常感谢

【问题讨论】:

  • 请包含代码,而不是图像,并提供您所依赖的所有导入。

标签: python dataframe dictionary time dask


【解决方案1】:

通过将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 是可选的)

【讨论】:

  • 非常感谢 mdurant。我解释得很糟糕,我认为 map_partitions 与系列一起操作,那是我的错误。
猜你喜欢
  • 2018-07-06
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 2020-12-04
  • 1970-01-01
相关资源
最近更新 更多