如何修正Pandas中字符修正标记列correct_flag的赋值错误?
解决Pandas中correct_flag列赋值错误的问题
原代码的问题在于使用了全局的if df['name'].str.contains('|Ã|Ñ').any()判断——只要DataFrame里有任意一行包含目标特殊字符,就会给所有行的correct_flag赋值为1,而不是逐行检测该行是否实际被修正。
以下是修正后的代码:
import pandas as pd d= {'name': ["AÃÑA", "23234", "BJORK", "3","JANEDOE123"]} df=pd.DataFrame(data=d, index=[0, 1, 2, 3,4]) # 定义字符映射,生成修正后的列 trans_map = str.maketrans('ÃÑ','AN') df['name_correct'] = df['name'].str.translate(trans_map) # 逐行对比原列和修正后的列,判断是否进行了修正 df['correct_flag'] = (df['name'] != df['name_correct']).astype(int) print(df)
代码说明:
- 保留原有的字符映射逻辑生成
name_correct列,确保修正结果符合预期。 - 通过
df['name'] != df['name_correct']生成布尔值序列,再用.astype(int)把True转为1,False转为0,实现逐行标记是否被修正的需求。
运行后输出的correct_flag列将只有第一行为1,其余行均为0,符合预期结果。
内容的提问来源于stack exchange,提问作者user3641630
相关产品推荐
相关产品推荐

