我有一個排序問題。
| TOT_ENERGY_CONSUMPTION | REGION_CODE | INDUSTRY_CODE |
|---|---|---|
| 11289.15 | 110101 | I65 |
| 11407.056 | 110101 | M73 |
| 14898.249 | 110101 | I63 |
| 9718.287 | 110102 | M7d |
| 9957.729923 | 110102 | I6s |
| 10653.603 | 110103 | M7s |
| 12673.787 | 110103 | I6c |
| 13101.499 | 110103 | M7w |
我希望我的最終輸出表排序如下:
| TOT_ENERGY_CONSUMPTION | REGION_CODE | INDUSTRY_CODE | 秩 |
|---|---|---|---|
| 14898.249 | 110101 | I65 | 1 |
| 11407.056 | 110101 | M73 | 2 |
| 11289.15 | 110101 | I63 | 3 |
| 9957.729923 | 110102 | M7d | 1 |
| 9718.287 | 110102 | I6s | 2 |
| 13101.499 | 110103 | M7s | 1 |
| 12673.787 | 110103 | I6c | 2 |
| 10653.603 | 110103 | M7w | 3 |
通過修復 REGION_CODE 和排序 TOT_ENERGY_CONSUMPTION 進行排序。然后將排名添加到 region_code
我試了幾次,沒有結果。
uj5u.com熱心網友回復:
DataFrame.sort_values與 一起使用GroupBy.cumcount:
df = df.sort_values(['REGION_CODE', 'TOT_ENERGY_CONSUMPTION'],
ascending=[True, False],
ignore_index=True
)
df["rank"] = df.groupby(['REGION_CODE']).cumcount().add(1)
print (df)
TOT_ENERGY_CONSUMPTION REGION_CODE INDUSTRY_CODE rank
0 14898.249000 110101 I63 1
1 11407.056000 110101 M73 2
2 11289.150000 110101 I65 3
3 9957.729923 110102 I6s 1
4 9718.287000 110102 M7d 2
5 13101.499000 110103 M7w 1
6 12673.787000 110103 I6c 2
7 10653.603000 110103 M7s 3
uj5u.com熱心網友回復:
groupby_rank然后使用sort_values:
out = df.assign(RANK=df.groupby('REGION_CODE', sort=False)['TOT_ENERGY_CONSUMPTION']
.rank('dense', ascending=False).astype(int)) \
.sort_values(['REGION_CODE', 'RANK'])
print(out)
# Output
TOT_ENERGY_CONSUMPTION REGION_CODE INDUSTRY_CODE RANK
2 14898.249000 110101 I63 1
1 11407.056000 110101 M73 2
0 11289.150000 110101 I65 3
4 9957.729923 110102 I6s 1
3 9718.287000 110102 M7d 2
7 13101.499000 110103 M7w 1
6 12673.787000 110103 I6c 2
5 10653.603000 110103 M7s 3
uj5u.com熱心網友回復:
這應該是你想要的:
df["rank"] = df.groupby(['REGION_CODE'])["TOT_ENERGY_CONSUMPTION"].rank("dense", ascending=False)
df = df.sort_values(['REGION_CODE','rank'])
這使
TOT_ENERGY_CONSUMPTION REGION_CODE INDUSTRY_CODE rank
2 14898.249000 110101 I63 1.0
1 11407.056000 110101 M73 2.0
0 11289.150000 110101 I65 3.0
4 9957.729923 110102 I6s 1.0
3 9718.287000 110102 M7d 2.0
7 13101.499000 110103 M7w 1.0
6 12673.787000 110103 I6c 2.0
5 10653.603000 110103 M7s 3.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411318.html
標籤:
