使用 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)
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)