正则表达式Sub和Pandas

我正在努力用字典中的数据替换熊猫细胞中的字符串。我有一个熊猫框:

import pandas as pd
import numpy as np
import re

f = {'GAAP':['<1>','2','3','4'],'CP':['5','6','<7>','8']}
filter = pd.DataFrame(data=f)
filter

和字典:

d = {'GAAP':['100','101'],'CP':['500','501','502']}
d

我正在尝试获得以下输出:

op = {'GAAP':['100|101','2','3','4'],'CP':['5','6','500|501|502','8']}
op = pd.DataFrame(data=op)
op  

我尝试了类似的东西:

def rep1(fr,di):
op=re.sub('\<.*?\>',fr,di)
return(op)


a='|'.join(d['GAAP'])
op=rep1(filter['GAAP'],a)
op

但是收到一个错误消息,说序列对象是可变的,不能被散列。关于我做错什么的任何建议?

评论
  • Antoi
    Antoi 回复

    Let us try use pd.to_numeric convert the <> to NaN, then fillna

    filter=filter.apply(pd.to_numeric,errors='coerce').fillna(pd.Series(d).str.join('|'))
          GAAP           CP
    0  100|101            5
    1        2            6
    2        3  500|501|502
    3        4            8