使用 Dask loc 的替代方法,如 Pandas loc | = 操作员不工作

Alternate way to use Dask loc like in Pandas loc | = operator not working in dask

for col1 in columns_1:
  for col2 in columns_2:
    df.loc[df['any_column_in_df'] == col2, col1] = 0

我想要什么:我想要替代方案 Code/Way 来迅速完成这件事!在 pandas 工作。 问题:在使用 df.loc 时无法在 dask 中使用赋值 (=) 因为不支持 inplace? 解释:我想在条件满足和 return 数据帧的地方分配 0/值! (不是系列!) 我尝试使用掩码,map_partitions 和 df.replace(对于这个简单的 1 列值操作和 returning dataframe 根据需要工作正常)...

def replace(x: pd.DataFrame) -> pd.DataFrame:
  return x.replace(
  {'any_column_to_replace_value': [np.nan]},
  {'any_column_to_replace_value': [0]}
  )
df = df.map_partitions(replace)

第一个代码怎么办?和 return 数据框。

在此先感谢,请帮助我 Dask 专家,我是 dask 的新手并正在探索它..

@martindurant 在 gitter 上的回答…

这是按行计算,因此您可以使用应用或 map_partitions

def process(df):
  for col1 in columns_1:
    for col2 in columns_2:
      df.loc[df[‘any_column_in_df’] == col2, col1] = 0
  return df

df2 = df.map_partitions(process)