我有一列,其中有对一列的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分组。
关于具有:它应用于对象ID超过一次的行。在此示例中,对象ID是1。
我的想法是制作另一列存储结果的列,该结果将通过select_analysis
函数中的简单where子句进行访问
示例: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
函数。
答案 0 :(得分:1)
假设您已将数据标记为熊猫,因此将其拉入熊猫,这是一种可能的解决方案:
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
list comp基本上是这样做的:
拉出df ['CA']中每个项目的值计数为一个序列。
使用loc
在“ CA”的每个值处索引到序列中以查找该值的计数
将该项目放入列表
将该列表添加为新列