我正在嘗試在 excel 中復制 countifs 以獲得我的資料框中列出的兩個唯一值之間的排名。我已經附加了使用 countif 和 let/rank 函式在 excel 中計算的預期輸出。
我正在嘗試生成“天然氣和燃煤電廠的平均排名”,它從“平均排名列”中獲取數字,然后將技術(CCGT 或煤炭)中的兩種獨特型別分為兩個新排名(天然氣或煤炭),然后我可以得到相關的分位數。如果您想知道為什么我需要這樣做,因為只有兩個燃煤電廠,那么當我在更大的資料集上運行此模型時,知道如何在代碼中而不是在我的資料集上手動執行此操作將很有用。
理想情況下,對于所有技術 == CCGT 的單位,輸出將回傳兩個等級 1-47,對于所有技術 == COAL 的單位,輸出將回傳 1-2。
| 這是我要制作的專欄 | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 單位編號 | 技術 | 2022 年 3 月 1 日 | 2022 年 4 月 1 日 | 2022 年 5 月 1 日 | 2022 年 6 月 1 日 | 2022 年 7 月 1 日 | 2022 年 8 月 1 日 | 平均排名 | 單位等級 | 天然氣和煤電廠的平均排名 | 氣體五分位數 | 煤炭五分之一 | 昆泰 |
| 小鹿-1 | CCGT | 1.0 | 5.0 | 1.0 | 5.0 | 2.0 | 1.0 | 2.5 | 1 | 1 | 1 | 0 | 氣體_1 |
| GRAI-6 | CCGT | 4.0 | 18.0 | 2.0 | 4.0 | 3.0 | 3.0 | 5.7 | 2 | 2 | 1 | 0 | 氣體_1 |
| EECL-1 | CCGT | 5.0 | 29.0 | 4.0 | 1.0 | 1.0 | 2.0 | 7.0 | 3 | 3 | 1 | 0 | 氣體_1 |
| PEMB-21 | CCGT | 7.0 | 1.0 | 6.0 | 13.0 | 8.0 | 8.0 | 7.2 | 4 | 4 | 1 | 0 | 氣體_1 |
| PEMB-51 | CCGT | 3.0 | 3.0 | 3.0 | 11.0 | 16.0 | 7.2 | 5 | 5 | 1 | 0 | 氣體_1 | |
| PEMB-41 | CCGT | 9.0 | 4.0 | 7.0 | 7.0 | 10.0 | 13.0 | 8.3 | 6 | 6 | 1 | 0 | 氣體_1 |
| WBURB-1 | CCGT | 6.0 | 9.0 | 22.0 | 2.0 | 7.0 | 5.0 | 8.5 | 7 | 7 | 1 | 0 | 氣體_1 |
| PEMB-31 | CCGT | 14.0 | 6.0 | 13.0 | 6.0 | 4.0 | 9.0 | 8.7 | 8 | 8 | 1 | 0 | 氣體_1 |
| GRMO-1 | CCGT | 2.0 | 7.0 | 10.0 | 24.0 | 11.0 | 6.0 | 10.0 | 9 | 9 | 1 | 0 | 氣體_1 |
| PEMB-11 | CCGT | 21.0 | 2.0 | 9.0 | 10.0 | 9.0 | 14.0 | 10.8 | 10 | 10 | 2 | 0 | 氣體_2 |
| STAY-1 | CCGT | 19.0 | 12.0 | 5.0 | 23.0 | 6.0 | 7.0 | 12.0 | 11 | 11 | 2 | 0 | 氣體_2 |
| GRAI-7 | CCGT | 10.0 | 27.0 | 15.0 | 9.0 | 15.0 | 11.0 | 14.5 | 12 | 12 | 2 | 0 | 氣體_2 |
| DIDCB6 | CCGT | 28.0 | 11.0 | 11.0 | 8.0 | 19.0 | 15.0 | 15.3 | 13 | 13 | 2 | 0 | 氣體_2 |
| SCCL-3 | CCGT | 17.0 | 16.0 | 31.0 | 3.0 | 18.0 | 10.0 | 15.8 | 14 | 14 | 2 | 0 | 氣體_2 |
| STAY-4 | CCGT | 12.0 | 8.0 | 20.0 | 18.0 | 14.0 | 23.0 | 15.8 | 14 | 14 | 2 | 0 | 氣體_2 |
| CDCL-1 | CCGT | 13.0 | 22.0 | 8.0 | 25.0 | 12.0 | 16.0 | 16.0 | 16 | 16 | 2 | 0 | 氣體_2 |
| STAY-3 | CCGT | 8.0 | 17.0 | 17.0 | 20.0 | 13.0 | 22.0 | 16.2 | 17 | 17 | 2 | 0 | 氣體_2 |
| MRWD-1 | CCGT | 19.0 | 26.0 | 5.0 | 19.0 | 17.3 | 18 | 18 | 2 | 0 | 氣體_2 | ||
| WBURB-3 | CCGT | 24.0 | 14.0 | 17.0 | 17.0 | 18.0 | 19 | 19 | 3 | 0 | 氣體_3 | ||
| WBURB-2 | CCGT | 14.0 | 21.0 | 12.0 | 31.0 | 18.0 | 19.2 | 20 | 20 | 3 | 0 | 氣體_3 | |
| GYAR-1 | CCGT | 26.0 | 14.0 | 17.0 | 20.0 | 21.0 | 19.6 | 21 | 21 | 3 | 0 | 氣體_3 | |
| STAY-2 | CCGT | 18.0 | 20.0 | 18.0 | 21.0 | 24.0 | 20.0 | 20.2 | 22 | 22 | 3 | 0 | 氣體_3 |
| 克林-A-1 | CCGT | 24.0 | 12.0 | 19.0 | 27.0 | 20.5 | 23 | 23 | 3 | 0 | 氣體_3 | ||
| SHOS-1 | CCGT | 16.0 | 15.0 | 28.0 | 15.0 | 29.0 | 27.0 | 21.7 | 24 | 24 | 3 | 0 | 氣體_3 |
| DIDCB5 | CCGT | 10.0 | 35.0 | 22.0 | 22.3 | 25 | 25 | 3 | 0 | 氣體_3 | |||
| CARR-1 | CCGT | 33.0 | 26.0 | 27.0 | 22.0 | 4.0 | 22.4 | 26 | 26 | 3 | 0 | 氣體_3 | |
| LAGA-1 | CCGT | 15.0 | 13.0 | 29.0 | 32.0 | 23.0 | 24.0 | 22.7 | 27 | 27 | 3 | 0 | 氣體_3 |
| CARR-2 | CCGT | 24.0 | 25.0 | 27.0 | 29.0 | 21.0 | 12.0 | 23.0 | 28 | 28 | 3 | 0 | 氣體_3 |
| GRAI-8 | CCGT | 11.0 | 28.0 | 36.0 | 16.0 | 26.0 | 25.0 | 23.7 | 29 | 29 | 4 | 0 | 氣體_4 |
| SCCL-2 | CCGT | 29.0 | 16.0 | 28.0 | 25.0 | 24.5 | 30 | 30 | 4 | 0 | 氣體_4 | ||
| LBAR-1 | CCGT | 19.0 | 25.0 | 31.0 | 28.0 | 25.8 | 31 | 31 | 4 | 0 | 氣體_4 | ||
| CNQPS-2 | CCGT | 20.0 | 32.0 | 32.0 | 26.0 | 27.5 | 32 | 32 | 4 | 0 | 氣體_4 | ||
| SPLN-1 | CCGT | 23.0 | 30.0 | 30.0 | 27.7 | 33 | 33 | 4 | 0 | 氣體_4 | |||
| DAMC-1 | CCGT | 23.0 | 21.0 | 38.0 | 34.0 | 29.0 | 34 | 34 | 4 | 0 | 氣體_4 | ||
| KEAD-2 | CCGT | 30.0 | 30.0 | 35 | 35 | 4 | 0 | 氣體_4 | |||||
| SHBA-1 | CCGT | 26.0 | 23.0 | 35.0 | 37.0 | 30.3 | 36 | 36 | 4 | 0 | 氣體_4 | ||
| 悍馬-1 | CCGT | 22.0 | 30.0 | 37.0 | 37.0 | 33.0 | 28.0 | 31.2 | 37 | 37 | 4 | 0 | 氣體_4 |
| CNQPS-4 | CCGT | 27.0 | 33.0 | 35.0 | 30.0 | 31.3 | 38 | 38 | 5 | 0 | 氣體_5 | ||
| CNQPS-1 | CCGT | 25.0 | 40.0 | 33.0 | 32.7 | 39 | 39 | 5 | 0 | 氣體_5 | |||
| SEAB-1 | CCGT | 32.0 | 34.0 | 36.0 | 29.0 | 32.8 | 40 | 40 | 5 | 0 | 氣體_5 | ||
| PETEM1 | CCGT | 35.0 | 35.0 | 41 | 41 | 5 | 0 | 氣體_5 | |||||
| ROCK-1 | CCGT | 31.0 | 34.0 | 38.0 | 38.0 | 35.3 | 42 | 42 | 5 | 0 | 氣體_5 | ||
| SEAB-2 | CCGT | 31.0 | 39.0 | 39.0 | 34.0 | 35.8 | 43 | 43 | 5 | 0 | 氣體_5 | ||
| WBURB-43 | 煤炭 | 32.0 | 37.0 | 40.0 | 39.0 | 31.0 | 35.8 | 44 | 1 | 0 | 1 | 煤_1 | |
| FDUNT-1 | CCGT | 36.0 | 36.0 | 45 | 44 | 5 | 0 | 氣體_5 | |||||
| COSO-1 | CCGT | 30.0 | 42.0 | 36.0 | 36.0 | 45 | 44 | 5 | 0 | 氣體_5 | |||
| WBURB-41 | 煤炭 | 33.0 | 38.0 | 41.0 | 40.0 | 32.0 | 36.8 | 47 | 2 | 0 | 1 | 煤_1 | |
| FELL-1 | CCGT | 34.0 | 39.0 | 43.0 | 41.0 | 33.0 | 38.0 | 48 | 46 | 5 | 0 | 氣體_5 | |
| KEAD-1 | CCGT | 43.0 | 43.0 | 49 | 47 | 5 | 0 | 氣體_5 |
我嘗試以與獲得平均排名相同的方式進行操作,這是資料框中輸入平均值的排名,但它似乎不適用于其他條件。
謝謝!!

uj5u.com熱心網友回復:
import pandas as pd
df = pd.read_csv("gas.csv")
display(df['Technology'].value_counts())
print('------')
display(df['Technology'].value_counts()[0]) # This is how you access count of CCGT
display(df['Technology'].value_counts()[1])
輸出:
CCGT 47
COAL 2
Name: Technology, dtype: int64
------
47
2
順便說一句:pd.cut或者pd.qcut可以用來計算分位數。您不必手動定義分位數是什么。
參考檔案和其他網站:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.qcut.html
https://www.geeksforgeeks.org/how-to-use-pandas-cut-and-qcut/
您可以通過多種方法進行排名。參考檔案:
- https://pandas.pydata.org/docs/reference/api/pandas.Series.rank.html
df['rank'] = df.groupby("Technology")["Average Rank"].rank(method = "dense", ascending = True)
df
方法{'average', 'min', 'max', 'first', 'dense'},默認'average'
How to rank the group of records that have the same value (i.e. ties):
average: average rank of the group
min: lowest rank in the group
max: highest rank in the group
first: ranks assigned in order they appear in the array
dense: like ‘min’, but rank always increases by 1 between groups.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/526961.html
上一篇:Excel、VBA、UserForm:根據另一個組合框中的選擇填充組合框
下一篇:Excel兩列和條件
