Python 更换单个立柱的零件

Python 更换单个立柱的零件,python,pandas,Python,Pandas,我需要在一个新的csv中用完整地址替换部分缩写地址,但一直遇到错误。我该如何解决这个问题 爱迪生路1234号------------>爱迪生巷1234号 4589堆栈溢出Dr------>4589堆栈溢出驱动器 import pandas as pd mycsv = pd.read_csv('addressescsv') mycsv['Address'] = str.replace({mycsv['Address']: {'Ln': 'Lane','Dr': 'Drive'}}) mycsv

我需要在一个新的csv中用完整地址替换部分缩写地址,但一直遇到错误。我该如何解决这个问题

爱迪生路1234号------------>爱迪生巷1234号

4589堆栈溢出Dr------>4589堆栈溢出驱动器

import pandas as pd

mycsv = pd.read_csv('addressescsv')
mycsv['Address'] = str.replace({mycsv['Address']: {'Ln': 'Lane','Dr': 'Drive'}})

mycsv.to_csv('newAddressescsv', index=False)

Traceback:

Traceback (most recent call last):
File "C:\movingalong.py", line 8, in <module>
File "C:\Users\Programs\Python\Python36-32\lib\site-
packages\pandas\core\generic.py", line 831, in __hash__
' hashed'.format(self.__class__.__name__))
TypeError: 'Series' objects are mutable, thus they cannot be hashed
将熊猫作为pd导入
mycsv=pd.read\u csv('addressescsv'))
mycsv['Address']=str.replace({mycsv['Address']:{'Ln':'Lane','Dr':'Drive'})
mycsv.to_csv('newAddressescsv',index=False)
回溯:
回溯(最近一次呼叫最后一次):
文件“C:\movingalong.py”,第8行,在
文件“C:\Users\Programs\Python\Python36-32\lib\site-
packages\pandas\core\generic.py”,第831行,在散列中__
“散列”。格式(self.\uuuuuuuuu类\uuuuuuuuuuu名称)
TypeError:“Series”对象是可变的,因此无法对其进行散列
您可以使用

输出

       Address
0   Lane
1  Drive
2   High
由于您正在寻找部分匹配,您可能想试试这个

import re
import pandas as pd 

df = pd.DataFrame({'Address':['City Ln', 'New Dr', 'Ln']})
rep = {'Ln': 'Lane','Dr': 'Drive'}
regex = re.compile(r"\b((%s)\S*)\b" %"|".join(rep.keys()), re.I)

def dictionary_lookup(match):
    return rep[match.group(2)]

def ReplaceStr(value):
    NewValue = regex.sub(dictionary_lookup, value)
    return NewValue


df["New Address"] = df["Address"].map(lambda x:ReplaceStr(x))
print df
输出

   Address New Address
0  City Ln   City Lane
1   New Dr   New Drive
2       Ln        Lane

启发,谢谢,但值如下:1234 Edison Ln,4785 Stack Overflow Dr。这就是我使用str的原因。我尝试了pd.DataFrame.replace({mycsv['Address']:……它仍然抛出相同的错误。更新了答案
   Address New Address
0  City Ln   City Lane
1   New Dr   New Drive
2       Ln        Lane