按特定单词从列表中提取字符串



我在panda中有这列地址,我只想选择美国的地址,但我要么得到一个空字符串,要么抛出一个错误。

以下是我所做的:

0             238 Lincoln St, Hahnville, LA 70057, USA
1             101 Home Pl Ln, Hahnville, LA 70057, USA
2          1250 Poydras St, New Orleans, LA 70113, USA
3         1117 Broadway STE 401, Tacoma, WA 98402, USA
4              2715 N Junett St, Tacoma, WA 98407, USA
5          Hillstrust Primary School, 29 Nethan St, Govan, Glasgow G51 3LX, UK
6                                5778+JM Godalming, UK
7       569 Durham Rd, Low Fell, Gateshead NE9 5EY, UK
8                 Pennine Way, Barnard Castle DL12, UK
9               14 Studios Rd, Shepperton TW17 0QW, UK

matching = [s for s in final_data["full_address"] if "USA" in s]
matching
#returns: TypeError: argument of type 'float' is not iterable
#Whereas
ab = [final_data["full_address"]]
matching = [s for s in ab if "USA" in s]
matching
#returns: []

预期输出:

0             238 Lincoln St, Hahnville, LA 70057, USA
1             101 Home Pl Ln, Hahnville, LA 70057, USA
2          1250 Poydras St, New Orleans, LA 70113, USA
3         1117 Broadway STE 401, Tacoma, WA 98402, USA
4              2715 N Junett St, Tacoma, WA 98407, USA

试试这个:

import pandas as pd
data = {
'full_address': [
'238 Lincoln St, Hahnville, LA 70057, USA', '101 Home Pl Ln, Hahnville, LA 70057, USA', '1250 Poydras St, New Orleans, LA 70113, USA',
'1117 Broadway STE 401, Tacoma, WA 98402, USA', '2715 N Junett St, Tacoma, WA 98407, USA', '5778+JM Godalming, UK', '569 Durham Rd, Low Fell, Gateshead NE9 5EY, UK',
'Pennine Way, Barnard Castle DL12, UK', '14 Studios Rd, Shepperton TW17 0QW, UK'
]
}
df = pd.DataFrame(data)
matching = df[df['full_address'].str.contains("USA")]
print(matching)

输出:

full_address
0      238 Lincoln St, Hahnville, LA 70057, USA
1      101 Home Pl Ln, Hahnville, LA 70057, USA
2   1250 Poydras St, New Orleans, LA 70113, USA
3  1117 Broadway STE 401, Tacoma, WA 98402, USA
4       2715 N Junett St, Tacoma, WA 98407, USA

你好,我试图重新创建您的场景,在这个场景中,它正在工作,我只是在特定列上添加了一个包含语句的查询,这里是国家

import pandas as pd
# Build cars DataFrame
names = ['238 Lincoln St, Hahnville, LA 70057, USA', '101 Home Pl Ln, Hahnville, LA 70057, USA', 'Hillstrust Govan, Glasgow G51 3LX, UK']
dict = { 'country':names}
cars = pd.DataFrame(dict)
b = cars.query('country.str.contains("USA")', engine='python')
print(b)