#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)