Получение слова из набора в фрейме данных?

#python #dataframe #geopandas

#питон #фрейм данных #геопандас

Вопрос:

У меня есть столбец dataframe ‘address’ со значениями, подобными этому, в каждой строке:

 3466B, Jerome Avenue, The Bronx, Bronx County, New York, 10467, United States, (40.881836199999995, -73.88176324294639)

Jackson Heights 74th Street - Roosevelt Avenue (7), 75th Street, Queens, Queens County, New York, 11372, United States, (40.74691655, -73.8914737373454)
 

Мне нужно только сохранить значение Bronx / Queens / Manhattan / Staten Island из каждой строки.

Есть ли какой-нибудь способ сделать это? Заранее благодарю.

Комментарии:

1. Всегда ли эти значения находятся в одном и том же месте?

2. На самом деле нет, но для каждой строки всегда есть уникальное значение в тех, которые я упомянул.

Ответ №1:

Один из вариантов заключается в следующем, предполагая, что значения всегда находятся в одном и том же месте. Использование .split(', ')[2]

 "3466B, Jerome Avenue, The Bronx, Bronx County, New York, 10467, United States, (40.881836199999995, -73.88176324294639)".split(', ')[2]
 

Если исходный файл представляет собой CSV (значения, разделенные запятыми), я бы посмотрел на pandas pandas.read_csv('filename.csv') и использовал все полезные функции, которые есть в pandas.

Если значения не находятся в одной и той же позиции, и вам нужен только набор значений или нет:

 import pandas as pd
df = pd.DataFrame(["The Bronx", "Queens", "Man"])
df.isin(["Queens", "The Bronx"])
 

Ответ №2:

Вы могли бы добавить столбец, назовем его «район», а затем заполнить его следующим образом.

 import pandas as pd

df = pd.DataFrame({'address':["3466B, Jerome Avenue, The Bronx, Bronx County, New York, 10467, United States, (40.881836199999995, -73.88176324294639)",
"Jackson Heights 74th Street - Roosevelt Avenue (7), 75th Street, Queens, Queens County, New York, 11372, United States, (40.74691655, -73.8914737373454)"]})

districts = ['Bronx','Queens','Manhattan', 'Staten Island']
df['district'] = ''

for district in districts:
    df.loc[df['address'].str.contains(district) , 'district'] = district
        
print(df)