更改字符串的缩写

Jac*_*ese -1 python

尝试更改缩写地址以完整描述结束,但回溯没有任何意义.请告诉我这里我做错了什么.

import pandas as pd

edit = pd.read_csv('mycsvfile')

edit['Home'] = edit['Home'].apply(lambda s: s.replace('Ct', 'Court'))
edit['Home'] = edit['Home'].apply(lambda s: s.replace('Rd', 'Road'))
edit['Home'] = edit['Home'].apply(lambda s: s.replace('Ln', 'Lane'))

edit.to_csv('newcsvfile',index = False)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
File "C:\Users\.py", line 20, in <module>
edit['Home'] = edit['Home'].apply(lambda s: s.replace('Ct', 'Court'))
File "C:\********.py", line 2294, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas\src\inference.pyx", line 1207, in pandas.lib.map_infer (pandas\lib.c:66124)
File "C:******.py", , in <lambda>
edit['Home'] = edit[Home'].apply(lambda s: s.replace('Ct', 'Court'))
AttributeError: 'float' object has no attribute 'replace'
Run Code Online (Sandbox Code Playgroud)

这些是Home列中的一些值:

1458 Clearlight Rd
7458 Grove Ln
8574 Grove Ct
2222 Grove Ln
1258 Grove Ct
1478 Grove Ln
Run Code Online (Sandbox Code Playgroud)

par*_*asu 5

Home列中的某些值缺失.熊猫将缺失值视为numpy nan,它们属于float类型.

你有几个选择:

  1. 用np.nan之外的东西填充你缺少的值:http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.fillna.html (在阅读csv时填写缺失的值:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html)

  2. 过滤非空值,然后应用您的函数:

edit[edit['Home'].notnull()]['Home'].apply(lambda s: s.replace('Ct', 'Court')