过滤熊猫列

时间:2020-08-08 14:25:47

标签: pandas

我正在尝试进行预处理,以查找美国某人提交的所有文本。美国的所有用户都可以放置在同一位置。不需要在美国的确切位置。
我有一个类似于的数据集:

created_at    text       lang       location                 by
Wed Jul 8    some text.  english.   New York, NY.          User 1
Wed Jul 8    some text.  english.   Washington, DC.        User 1
Wed Jul 8    some text.  english.   Baltimore.             User 1
Wed Jul 8    some text.  english.   DC, US.                User 1
Wed Jul 8    some text.  english.   The United States.     User 1
Wed Jul 8    some text.  english.   US.                    User 1
Wed Jul 8    some text.  english.   Poland.                User 1
Wed Jul 8    some text.  english.   1234332.               User 1
Wed Jul 8    some text.  english.   The Earth.              User 1
Wed Jul 8    some text.  english.   Nottingham.              User 1
Wed Jul 8    some text.  english.   Leicestershire, England  User 1
Wed Jul 8    some text.  english.   ⬛️⬛️⬛️⬛️⬛️⬛️ [REDACTED]    User 1
Wed Jul 8    some text.  english.   天国の門                  User 1

而不是遍历数据集并一一删除所有非美国州,州,县等。是否可以轻松访问df.locations,并获得纽约,纽约,华盛顿特区,哥伦比亚特区,美国,​​巴尔的摩,美国和美国以外的所有位置?这只是数据的一小部分,这就是为什么我试图找到一种更简化的方法。

2 个答案:

答案 0 :(得分:0)

好像“位置”列不是标准格式。 尝试使用白名单方法,从而删除位置不在批准列表中的行。

remove_list = ['Ney York','US']

df_us = df [df ['location']。isin(approved_list)]

通过对大小写和空格进行规范化,可以改进这种方法。

答案 1 :(得分:0)

您可以尝试使用geopy找出该行在谈论哪个国家。用法的示例如下(用行替换“芝加哥伊利诺伊州”)。

from geopy.geocoders import Nominatim

geolocator = Nominatim()
loc = geolocator.geocode('Chicago Illinois')
print(loc.address)
# u'Chicago, Cook County, Illinois, United States of America'

loc = geolocator.geocode('San Francisco California')
print(loc.address[-1]) 
# United States of America'