我有一个包含一列邮政地址的数据帧(用geopy.geocoders GoogleV3生成--我用它来解析我的数据帧).然而,geolocator.geocode的输出具有国家名称--这是我不想要的.它还包含单元号--我不想要.

我该怎么做呢?

我试过了:

test_add['clean address'] = test_add.apply(lambda x: x['clean address'][:-5], axis = 1)

def remove_units(X):
    X = X.split()
    X_new = [x for x in X if not x.startswith("#")]
    return ' '.join(X_new)

test_add['parsed addresses'] = test_add['clean address'].apply(remove_units)

它适用于:

data = ["941 Thorpe St, Rock Springs, WY 82901, USA",
    "2809 Harris Dr, Antioch, CA 94509, USA",
    "7 Eucalyptus, Newport Coast, CA 92657, USA",
    "725 Mountain View St, Altadena, CA 91001, USA",
    "1966 Clinton Ave #234, Calexico, CA 92231, USA",
    "431 6th St, West Sacramento, CA 95605, USA",
    "5574 Old Goodrich Rd, Clarence, NY 14031, USA",
    "Valencia Way #1234, Valley Center, CA 92082, USA"]
test_df = pd.DataFrame(data, columns=['parsed addresses'])

但是当我使用具有150k这样的地址的更大的数据帧时,得到一个错误:"AttributeError:‘Float’对象没有‘Split’属性".

Ultimately, I require only street number, street name, city, state 和 zipcode.

推荐答案

另一种可能的解决方案是:

test_df['parsed addresses'].str.replace(r',\D+$|\s#\d+', '', regex=True)

解释

  • \D表示非数字字符.
  • \D+表示一个或多个非数字字符
  • $表示字符串结束
  • |表示逻辑或
  • \s表示空格字符
  • \d+表示一个或多个数字字符

有关regex的更全面处理,请参阅Regular Expression HOWTO.

输出:

0       941 Thorpe St, Rock Springs, WY 82901
1           2809 Harris Dr, Antioch, CA 94509
2       7 Eucalyptus, Newport Coast, CA 92657
3    725 Mountain View St, Altadena, CA 91001
4        1966 Clinton Ave, Calexico, CA 92231
5       431 6th St, West Sacramento, CA 95605
6    5574 Old Goodrich Rd, Clarence, NY 14031
7       Valencia Way, Valley Center, CA 92082
Name: parsed addresses, dtype: object

Python相关问答推荐

在for循环中保存和删除收件箱

Python:MultiIndex Dataframe到类似json的字典列表

CustomTKinter-向表单添加额外的输入字段

为什么基于条件的过滤会导致pandas中的空数据框架?

如何使用bs 4从元素中提取文本

从今天起的future 12个月内使用Python迭代

对于一个给定的数字,找出一个整数的最小和最大可能的和

2D空间中的反旋算法

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

Asyncio:如何从子进程中读取stdout?

joblib:无法从父目录的另一个子文件夹加载转储模型

如何启动下载并在不击中磁盘的情况下呈现响应?

在Python 3中,如何让客户端打开一个套接字到服务器,发送一行JSON编码的数据,读回一行JSON编码的数据,然后继续?

如何在Python中使用另一个数据框更改列值(列表)

使用特定值作为引用替换数据框行上的值

pandas:对多级列框架的列进行排序/重新排序

Polars将相同的自定义函数应用于组中的多个列,

为什么调用函数的值和次数不同,递归在代码中是如何工作的?

干燥化与列姆化的比较

关于两个表达式的区别