尝试保持表中的行是'FEAMID'所特有的,其中'AREA'是最大的。
表:
FEATUREID COUNT AREA MIN MAX RANGE MEAN
0 -129226 1659 1493100 58441 60966 2525 59522.358650
58940 940170467 1658 1492200 36659 45157 8498 40877.910133
0 -129226 61540 55386000 56586 62291 5705 58709.266363
我可以使用
获取每个'FEATUREID'的最大值'AREA'table.groupby(['FEATUREID'])['AREA'].max()
FEATUREID
-129226 55386000
-129225 59676300
-129224 110445300
940170467 1492200
这是一个我认为对于索引具有FEATUREID的系列?我想选择本系列标识的表行,但我不确定这样做的最佳方法。
答案 0 :(得分:0)
df1 = df.groupby('FEATUREID')['AREA'].nlargest(1).reset_index(level=0)
.rename(columns={0:'AREA'})
print df1
FEATUREID AREA
0 -129226 55386000
58940 940170467 1492200
print pd.merge(df, df1, on=['FEATUREID','AREA'])
FEATUREID COUNT AREA MIN MAX RANGE MEAN
0 940170467 1658 1492200 36659 45157 8498 40877.910133
1 -129226 61540 55386000 56586 62291 5705 58709.266363
如果您需要index
,则会更复杂:
df1 = df.groupby('FEATUREID')['AREA'].nlargest(1).reset_index()
.rename(columns={0:'AREA', 'level_1': 'index'})
print df1
FEATUREID index AREA
0 -129226 0 55386000
1 940170467 58940 1492200
df = pd.merge(df.reset_index(), df1, on=['FEATUREID','AREA', 'index']).set_index('index')
df.index.name = None
print df
FEATUREID COUNT AREA MIN MAX RANGE MEAN
58940 940170467 1658 1492200 36659 45157 8498 40877.910133
0 -129226 61540 55386000 56586 62291 5705 58709.266363