Я фильтрую список для тех записей, которые содержат ключевое слово в одном столбце. Общий список, выходы определяются как:Python Pandas фильтрация и создание новой dataframe
outputs =
sent_name Name Lat Lng type
Abbey Road Station, London, UK Abbey Road, London E15, UK 51.53193 0.00376 [u'transit_station', u'point_of_interest', u'establishment']
Abbey Wood Station, London, UK Abbey Wood, London SE2, UK 51.49106 0.12142 [u'transit_station', u'point_of_interest', u'establishment']
Я ищу выход [3] для строки «станции», а затем добавить результаты, где это верно для пустого списка, результатов. По -
results = []
for output in outputs:
if "station" in output[3]:
results.append(output)
Я хотел бы использовать панд для дальнейшего анализа, но не знаю, как воссоздать DataFrame после фильтрации этих результатов.
OD = pd.read_csv('./results.csv', header=0)
Где, results.csv снова:
sent_name Name Lat Lng type
Abbey Road Station, London, UK Abbey Road, London E15, UK 51.53193 0.00376 [u'transit_station', u'point_of_interest', u'establishment']
Abbey Wood Station, London, UK Abbey Wood, London SE2, UK 51.49106 0.12142 [u'transit_station', u'point_of_interest', u'establishment']
Используя iterrows, я могу перебрать строки в панде dataframe и отфильтровывать те, где существует «станция» в столбце типа ,
for index, row in OD.iterrows():
if "station" in row['type']:
Однако из этого я не смог создать новый DataFrame. Моя конечная цель - создать новый csv (который содержит только записи, которые содержат «станцию» в столбце типа), используя функцию .to_csv в Pandas.
Я попытался создать новый DataFrame с соответствующими именами индексов. Затем фильтрации, как описаны выше, и попытка добавить эти результаты к новому dataframe
OD_filtered = pd.DataFrame(index=['sent_name','Name','Lat', 'Lng', 'type'])
for index, row in OD.iterrows():
if "station" in row['type']:
OD_filtered.append([row['sent_name'], row['Name'], row['Lat'], row['Lng'], row['type']])
pprint(OD_filtered)
Однако это не удается написать dataframe и остается пустыми. При печати (OD_filtered) это дает:
Empty DataFrame
Columns: []
Index: [sent_name, Name, Lat, Lng, type]
Ваш 'read_csv' код не должен работать как ваш CSV имеет несколько запятых, но помимо этого, вы должны быть в состоянии сделать' new_df = OD [OD.apply (лямбда х: «станции» х ['type'], axis = 1)] 'Я думаю – EdChum
Очень элегантный. Я пропустил метод OD.apply. Пожалуйста, поставьте это как ответ, и я могу отметить его правильно – LearningSlowly