使用Modin时df.shift()函数失效的原因及解决办法
解决Modin中df.shift()赋值时报长度不匹配的问题
你遇到的是Modin在单列shift结果赋值时的兼容问题,以下是几种可行的解决办法:
改用DataFrame级别的shift操作后取列
直接对DataFrame执行shift再提取目标列,能避免Modin内部的分区对齐错误:import modin.pandas as pd import ray ray.init(runtime_env={'env_vars': {'__MODIN_AUTOIMPORT_PANDAS__': '1'}}) df = pd.read_csv('dataframe.csv') df['test'] = 1 # 修改为DataFrame shift后取test列 df['shift'] = df.shift()['test']临时转为Pandas对象处理
如果数据集规模不大,可先转成Pandas完成shift操作,再转回Modin:import modin.pandas as pd import ray ray.init(runtime_env={'env_vars': {'__MODIN_AUTOIMPORT_PANDAS__': '1'}}) df = pd.read_csv('dataframe.csv') df['test'] = 1 # 转Pandas处理 df_pd = df.to_pandas() df_pd['shift'] = df_pd['test'].shift() # 转回Modin df = pd.DataFrame(df_pd)升级Modin和Ray到最新稳定版
部分旧版本的Modin在shift方法的实现上存在bug,升级后可能直接解决问题:pip install --upgrade modin ray
内容的提问来源于stack exchange,提问作者user15070504
相关产品推荐
相关产品推荐

