【发布时间】:2021-08-23 20:56:21
【问题描述】:
我希望将一个函数应用于 Python 中的 datatable 的多个列。使用R 的data.table 会:
# columns to apply function to
x <- c('col_1', 'col_2')
# apply
df[, (x) := lapply(.SD, function(x) as.Date(x, "%Y-%m-%d")), .SDcols=x]
如何使用 Python 的datatable 做同样的事情?我对apply 和lambda 和pandas 有一些了解,例如:
# create dummy data
df = pd.DataFrame({'col_1': ['2021-12-01']
, 'col_2': ['2021-12-02']
, 'col_3': ['foobar']
}
)
# columns to apply function to
x = ['col_1', 'col_2']
# apply
df[x] = df[x].apply(lambda x: pd.to_datetime(x, format='%Y-%m-%d'))
但它在 Python 的 datatable 中的等价物是什么?这是假设我坚持使用apply 和lambda。谢谢。
edit* 我已经从 UDF 更改为标准函数 pd.to_datetime,因为我们中的一些人提到前者是不可能的,而后者是。随意使用任何示例来说明apply 和datatable。谢谢
【问题讨论】:
-
py-datatable是和 Pandas 一样的第三方库;它不是“Python 的”包。如果你想知道如何使用它,你应该从阅读documentation开始。或者,如果您知道如何以这种方式解决问题,请考虑为什么您不只是使用 Pandas。 -
@KarlKnechtel 感谢您的链接。该文档是我审查过的众多文档之一。我找不到解决方案。我正在寻找
py-datatable解决方案,因为它的速度快 URL @Mohammad 也感谢您的功能请求 -
你能创建一个可重现的例子吗?然后,这里的人们可以使用 pydatatable 中的解决方案来回答。尚不支持通过 apply 使用匿名函数。将一个函数应用于多个函数是可能的;虽然不是匿名函数
-
对于共享的示例,可以使用
as_type方法,:DT[:, dt.as_type(f[:], dt.Type.date32)]。 datatable 不如 pandas 健壮(仍然缺少一些功能);随着时间的推移和社区的贡献,它只会变得更好
标签: python lambda apply py-datatable