使用以下代码检查 SG 和 PL 列是否存在 IT01 + 8 的组合,如果存在,则将 PL 列中的值从 8 更改为 6。如果不是,则保留原始值。
cm_full_df['PL'] = np.where(cm_full_df.set_index(['SG', 'PL']).index.isin(zip(['IT01'],[8])), 6, cm_full_df['PL'])
我能够在 VS Code 中顺利运行它,没有任何问题,但是当我通过 CMD 控制台运行它时,我收到 TypeError:
类型错误:“zip”类型的对象没有 len()
所以数据集不会改变,但我运行脚本的方式要么引发错误,要么不引发错误。有人可以建议吗?
不确定为什么您会得到不一致的结果...但是,我可以修复您的错误。
我建议用
zip()
包裹 list()
,因为 zip()
返回 iterator
,而不是 iterable
。 isin()
正在等待 iterable
。请参阅 isin()
文档(格式是我自己的)。
Index.isin(values, level=None)
参数:
:设置或类似列表values
:str 或 int,可选level