清洗DataFrame内字符串系列时单单元格生效但循环执行报错如何解决
解决方案
最优方案:使用apply批量处理整列
直接调用pandas内置的apply方法对Abstract列的所有单元格批量执行预处理函数,完全避免手动循环的赋值问题,代码如下:
data['Abstract'] = data['Abstract'].apply(pre_process)
如果你的列里存在空值、非列表格式的异常单元格,可以加一层格式校验避免报错:
data['Abstract'] = data['Abstract'].apply(lambda x: pre_process(x) if isinstance(x, list) else x)
如果你需要使用循环实现
之前循环报错的核心原因是链式索引触发了pandas的赋值安全校验,换成loc按行索引赋值即可解决,代码如下:
for row_idx in data.index: data.loc[row_idx, 'Abstract'] = pre_process(data.loc[row_idx, 'Abstract'])
关于合并处理丢数据的说明
不需要提前合并整列数据,上述逐单元格处理的方案会完全保留原有数据的结构和行对应关系,不会出现数据丢失问题。
内容的提问来源于stack exchange,提问作者Alexandra
相关产品推荐
相关产品推荐

