我试图首先按升序按索引排列数据框中的行,但 II 有具有重复索引的行。对于这些,我希望它们按特定列中的值按升序排列。下面是我的数据框的样子:
layer row col stage conductance riverbott
row_Index
8 0.0 8.0 29.0 123.170732 1250000.0 122.170732
6 0.0 6.0 21.0 123.170732 1250000.0 122.170732
7 0.0 7.0 22.0 123.170732 1250000.0 122.170732
8 0.0 8.0 24.0 123.170732 1250000.0 122.170732
10 0.0 8.0 14.0 123.170732 1250000.0 122.170732
12 0.0 8.0 53.0 123.170732 1250000.0 122.170732
8 0.0 8.0 23.0 123.170732 1250000.0 122.170732
10 0.0 8.0 12.0 123.170732 1250000.0 122.170732
我试过做
df = df.sort_values(['col'])
df = df.sort_index()
在我的数据框中,我的索引值等于我在“行”中的值。我试过使用df = df.sort_values(['row'])
代替df.sort_index()
. 但是,我一直遇到问题,我的数据框首先按索引按升序排序(这是需要的),但有时会排列具有重复索引的行,最低列值在前,而其他列值在前. 例如:
layer row col stage conductance riverbott
row_Index
6 0.0 6.0 21.0 123.170732 1250000.0 122.170732
7 0.0 7.0 22.0 123.170732 1250000.0 122.170732
8 0.0 8.0 23.0 123.170732 1250000.0 122.170732
8 0.0 8.0 24.0 123.170732 1250000.0 122.170732
8 0.0 8.0 29.0 123.170732 1250000.0 122.170732
10 0.0 8.0 14.0 123.170732 1250000.0 122.170732
10 0.0 8.0 12.0 123.170732 1250000.0 122.170732
12 0.0 8.0 53.0 123.170732 1250000.0 122.170732
我希望我的数据框像这样组织:
layer row col stage conductance riverbott
row_Index
6 0.0 6.0 21.0 123.170732 1250000.0 122.170732
7 0.0 7.0 22.0 123.170732 1250000.0 122.170732
8 0.0 8.0 23.0 123.170732 1250000.0 122.170732
8 0.0 8.0 24.0 123.170732 1250000.0 122.170732
8 0.0 8.0 29.0 123.170732 1250000.0 122.170732
10 0.0 8.0 12.0 123.170732 1250000.0 122.170732
10 0.0 8.0 14.0 123.170732 1250000.0 122.170732
12 0.0 8.0 53.0 123.170732 1250000.0 122.170732
我这样做的原因是因为我想删除重复的索引,保留 'col' 中具有最低值的索引。
谢谢您的帮助。
排序:
df = df.reset_index().sort_values(['row_Index', 'col']).set_index('row_Index')
输出:
layer row col stage conductance riverbott
row_Index
6 0.0 6.0 21.0 123.170732 1250000.0 122.170732
7 0.0 7.0 22.0 123.170732 1250000.0 122.170732
8 0.0 8.0 23.0 123.170732 1250000.0 122.170732
8 0.0 8.0 24.0 123.170732 1250000.0 122.170732
8 0.0 8.0 29.0 123.170732 1250000.0 122.170732
10 0.0 8.0 12.0 123.170732 1250000.0 122.170732
10 0.0 8.0 14.0 123.170732 1250000.0 122.170732
12 0.0 8.0 53.0 123.170732 1250000.0 122.170732
然后删除重复项:
df.loc[~df.index.duplicated(keep='first')]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句