Упростить запрос до «где», создав новый столбец с пандами? - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть столбец с SQL-запросами к столбцу. Они реализованы в функции под названием Select_analysis

Форма:

Select_analysis (input_shapefile, output_name, {where_clause}) # it takes until where.

Пример:

SELECT * from OT         # OT is a dataset
GROUP BY OT.CA  # CA is a number that may exist many times.Therefore we group by that field.
HAVING ((Count(OT.OBJECTID))>1) # an id that appears more than once.

Набор данных OT

objectid     CA
1            125
2            342
3            263
1            125

Мы группируем по CA.

О наличии: оно применяется к строкам, которые объявляются более одного раза. Который является объектом 1 в этом примере.

Моя идея состоит в том, чтобы создать еще один столбец, в котором будут храниться результаты, к которым будет обращаться простой оператор where в функции select_analysis

пример: набор данных OT

objectid     CA       count_of_objectid_aftergroupby
1            125           2
2            342           1
3            263           1
1            125           2

Так тогда может быть:

Select_analysis(roads.shp,output.shp, count_of_objectid_aftergroupby > '1')

Примечания

должно быть так, чтобы в конце использовалась функция select analysis.

1 Ответ

0 голосов
/ 01 ноября 2018

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

df=pd.DataFrame({'objectID':[1,2,3,1],'CA':[125,342,463,125]}).set_index('objectID')


objectID    CA
1           125
2           342
3           463
1           125

df['count_of_objectid_aftergroupby']=[df['CA'].value_counts().loc[x] for x in df['CA']]

objectID    CA  count_of_objectid_aftergroupby  
1           125                              2
2           342                              1
3           463                              1
1           125                              2

Список comp делает в основном это: извлеките значение для каждого элемента в df ['CA'] как серию. Используйте loc для индексации в серии при каждом значении 'CA', чтобы найти счетчик этого значения Поместите этот предмет в список добавить этот список в качестве нового столбца

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...