在 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
将其转换为 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