Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫字符串替换类型错误-使用熊猫df列替换单词_Python_Pandas_Dataframe_Replace - Fatal编程技术网

Python 熊猫字符串替换类型错误-使用熊猫df列替换单词

Python 熊猫字符串替换类型错误-使用熊猫df列替换单词,python,pandas,dataframe,replace,Python,Pandas,Dataframe,Replace,我使用的是Python 3.7,有一个大数据框,其中包含一列地址,如下所示: c = ['420 rodeo drive', '22 alaska avenue', '919 franklin boulevard', '39 emblem alley', '67 fair way'] df1 = pd.DataFrame(c, columns = ["address"]) 还有一个地址缩写及其usps版本的数据帧。例如: x = ['avenue', 'drive', 'b

我使用的是Python 3.7,有一个大数据框,其中包含一列地址,如下所示:

c = ['420 rodeo drive', '22 alaska avenue', '919 franklin boulevard', '39 emblem alley', '67 fair way']
df1 = pd.DataFrame(c, columns = ["address"])
还有一个地址缩写及其usps版本的数据帧。例如:

x = ['avenue', 'drive', 'boulevard', 'alley', 'way']
y = ['aly', 'dr', 'blvd', 'ave', 'way']
df2 = pd.DataFrame(list(zip(x,y)), columns = ['common_abbrev', 'usps_abbrev'], dtype = "str")
我想做的事情如下:

  • 搜索
    df1['address']
    查找
    df2['common\u abbrev']
    中出现的单词,并替换为
    df2['usps\u abbrev']
  • 返回转换后的
    df1
  • 为此,我尝试了几种方法,如
    df.str.replace()
    的标准策略:

    df1["address"] = df1["address"].str.replace(df2["common_abbrev"], df2["usps_abbrev"])
    
    但是,我得到以下错误:

    `TypeError: repl must be a string or callable`.
    
    我的问题是:

  • 既然我已经给出了
    df2
    dtype
    ,为什么我会收到错误

  • 我怎样才能产生我想要的结果:

             address
    0       420 rodeo dr
    1      22 alaska ave
    2  919 franklin blvd
    3      39 emblem aly
    4        67 fair way
    

  • 感谢您的帮助。

    首先使用创建一个
    dict
    。然后使用:


    d=dict(zip(x,y))
    可能是better@MustafaAyd是的,更新了我的答案。谢谢你的建议。@MayankPorwal谢谢你的建议,这是清晰直观的。太好了。请不要忘记投票并接受答案。@MayankPorwal还有一个问题:
    dict
    是如何将我的数据类型转换成字符串的?
    In [703]: x = ['avenue', 'drive', 'boulevard', 'alley', 'way']
         ...: y = ['aly', 'dr', 'blvd', 'ave', 'way']
    
    In [686]: d = dict(zip(x, y))
    
    In [691]: df1.address = df1.address.replace(d, regex=True)
    
    In [692]: df1
    Out[692]: 
                 address
    0       420 rodeo dr
    1      22 alaska aly
    2  919 franklin blvd
    3      39 emblem ave
    4        67 fair way