为了账号安全,请及时绑定邮箱和手机立即绑定

用另一列 Pandas DataFrame 替换一列中的值

用另一列 Pandas DataFrame 替换一列中的值

慕侠2389804 2021-11-16 16:30:22
我有一个带有 ids 作为字符串的 Pandas 数据框 df:我正在尝试创建 new_claim 和 new_description 列我发现的最接近的 SO 是使用正则表达式有效地将一列中的部分值替换为熊猫中另一列中的值?但这使用了拆分部分,并且由于描述发生了变化,我无法一概而论。我可以跑一次date_reg = re.compile(r'\b'+df['old_id'][1]+r'\b')df['new_claim'] = df['claim'].replace(to_replace=date_reg, value=df['external_id'], inplace=False)但如果我有date_reg = re.compile(r'\b'+df['claim']+r'\b')然后我得到“TypeError: 'Series' 对象是可变的,因此它们不能被散列”我采取的另一种方法df['new_claim'] = df['claim']for i in range(5):    old_id = df['old_id'][i]    new_id = df['external_id'][i]    df['new_claim'][i] = df['claim'][i].replace(to_replace=old_id,value=new_id)这给出了一个类型错误:replace() 没有关键字参数
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

仅使用方法pandas.replace():


df.old_id = df.old_id.fillna(0).astype('int')


list_old = list(map(str, df.old_id.tolist()))

list_new = list(map(str, df.external_id.tolist()))


df['new_claim'] = df.claim.replace(to_replace=['Claim ID: ' + e for e in list_old], value=['Claim ID: ' + e for e in list_new], regex=True)

df['new_description'] = df.description.replace(to_replace=['\* ' + e + '\\n' for e in list_old], value=['* ' + e + '\\n' for e in list_new], regex=True)

产生以下输出:

//img1.sycdn.imooc.com//61936c4700016e2f14860632.jpg

查看完整回答
反对 回复 2021-11-16
  • 1 回答
  • 0 关注
  • 406 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信