在Pandas中,如果我想创建一列条件哑元(假设变量等于字符串时为1,不等于字符串时为0),那么我在Pandas中的后藤是:
data["ebt_dummy"] = np.where((data["paymenttypeid"]=='ebt'), 1, 0)
在dask Dataframe 中天真地尝试这个操作会抛出一个错误。按照文档中关于map_partitions的说明进行操作也会抛出一个错误:
data = data.map_partitions(lambda df: df.assign(ebt_dummy = np.where((df["paymenttypeid"]=='ebt'), 1, 0)), meta={'paymenttypeid': 'str', 'ebt_dummy': 'i8'})
做这件事的好方法,或者最黑暗的方法是什么?
3条答案
按热度按时间yk9xbfzb1#
下面是一些示例数据:
我们把它转换成 Dataframe
并使用
apply
(在系列上)指定:看起来您传递的
meta
是问题所在,因为这是有效的:在我的例子中,如果我想指定
meta
,我必须传递当前data
的数据类型,而不是我赋值后期望的数据类型:eit6fx6z2#
这对我也很有效:
8yparm6h3#
我相信你要找的是一个三元运算。对于数字,像这样的东西应该可以工作。