在 dask 中创建一个新列(数组,列表)

Creating a new column in dask (arrays ,list)

将其转换为 dask 格式相当于什么

df['x'] = np.where(df['y'].isin(a_list), 'yes', 'no')

df 将是一个带有 n 个分区的 dask 数据框,a_list 只是一个项目列表。

如果我只是将 np.where 更改为 da.where,而使用 dask 数据框,我得到的错误是 number of partitions do not match 1 != n

无需np即可实现:

df["x"] = df["y"].isin(a_list).map({False: "No", True: "Yes"})

这是一个可重现的例子:

import dask

df = dask.datasets.timeseries(seed=123)

df["x"] = df["name"].isin(["Bob", "Tim"]).map({False: "No", True: "Yes"})

print(df.head(10))
#                        id      name    x         y
# timestamp
# 2000-01-01 00:00:00  1064     Wendy   No  0.921843
# 2000-01-01 00:00:01   983     Edith   No -0.196625
# 2000-01-01 00:00:02  1028     Alice   No -0.512889
# 2000-01-01 00:00:03  1000       Tim  Yes -0.378292
# 2000-01-01 00:00:04  1022     Wendy   No -0.640633
# 2000-01-01 00:00:05  1024       Bob  Yes  0.664895
# 2000-01-01 00:00:06  1011     Quinn   No  0.940216
# 2000-01-01 00:00:07   971   Norbert   No -0.750241
# 2000-01-01 00:00:08  1035    Hannah   No -0.335760
# 2000-01-01 00:00:09  1041  Patricia   No  0.984533