编辑:请求使用现有代码更新此帖子。我正在使用arcpy将要素类转换为numpy数组,然后转换为pandas数据帧:
MainActivity
正如标题所示,我正在尝试使用最大的Shape_Area按FID_preproc和NAME进行分组。
itsct_nparr = arcpy.da.FeatureClassToNumPyArray(prItsct, ['FID_preproc','PLANREG_NAME','Shape_Area'])
#create a pandas DataFrame objects from the NumPy arrays
itsct_df = DataFrame(itsct_nparr, columns=['FID_preproc','PLANREG_NAME','Shape_Area'])
maxarea = itsct_df.groupby(['FID_preproc','PLANREG_NAME'], as_index=False).max()
maxarea.to_csv(csvout)
del itsct_nparr
这让我接近我想要的但是产生与上面第一个样本集相同的结果。
Input:
FID_preproc NAME Shape_Area
1340 A 25952.35775
1341 A 118099.5219
1341 B 305220.1244
1342 A 12053.13585
Desired Result:
FID_preproc NAME Shape_Area
1340 A 25952.35775
1341 B 305220.1244
1342 A 12053.13585
答案 0 :(得分:2)
在我看来,你实际上只想要每个FID_preproc的最大形状区域:
In[34]:
maxarea = df.loc[df.groupby('FID_preproc', as_index=False)['Shape_Area'].idxmax()]
maxarea
Out[34]:
FID_preproc NAME Shape_Area
0 1340 A 25952.35775
2 1341 B 305220.12440
3 1342 A 12053.13585
如果您在第一列上groupby
然后调用idxmax
这将返回最大值的索引标签,则可以将这些标签传递给orig df索引
答案 1 :(得分:1)
尝试:
maxarea = itsct_df.groupby(['FID_preproc','PLANREG_NAME'], as_index=False).max()