[英]Create a function to calculate median cost across different years
我有一個示例數據集,其中包含不同年份的 id 和成本,如下所示:
ID | 2015-04 | 2015-05 | 2015-06 | 2015-07 | 2016-04 | 2016-05 | 2016-06 | 2016-07 | 2017-04 | 2017-05 | 2017-06 | 2017-07 | 2018-04 | 2018-05 | 2018-06 | 2018-07 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
10 | 58500 | 58500 | 58300 | 57800 | 57500 | 57700 | 57800 | 57800 | 57800 | 57900 | 58400 | 59000 | 59500 | 59500 | 59000 | 58500 |
11 | 104600 | 104600 | 105700 | 106100 | 106300 | 107300 | 108000 | 107600 | 107800 | 108300 | 109200 | 109600 | 109300 | 108700 | 109000 | 110700 |
12 | 104900 | 106700 | 107900 | 107500 | 106100 | 105200 | 105700 | 106400 | 106700 | 107100 | 107200 | 107100 | 107500 | 108300 | 109200 | 110500 |
13 | 50500 | 49600 | 48900 | 48400 | 48100 | 48000 | 47700 | 47500 | 47400 | 47600 | 47800 | 47800 | 47600 | 47600 | 48100 | 48400 |
14 | 49800 | 49900 | 50300 | 50800 | 51100 | 51200 | 51200 | 51400 | 51600 | 51900 | 52400 | 52600 | 52300 | 51800 | 51100 | 50900 |
如何在 Python 中創建 function 以找到屬於其各自 ID 的每年的中位數成本? 我希望 function 在開始和結束年份方面是動態的,這樣如果新數據來自不同年份,代碼將相應地計算更改。 例如,如果 2019 年有新數據,則結束日期將自動被視為 2019 年而不是 2018 年,並分別計算其中位數。
使用上面給出的當前數據樣本,結果應該如下所示:
ID | 2015 | 2016 年 | 2017 | 2018 |
---|---|---|---|---|
10 | 58400 | 57750 | 58150 | 59250 |
11 | 105150 | 107450 | 108750 | 109150 |
12 | 107100 | 105900 | 107100 | 108750 |
13 | 49250 | 47850 | 47700 | 47850 |
14 | 50100 | 51200 | 52150 | 51450 |
首先,我們將列名拆分為-
並僅獲得年份。 然后我們根據這些年份對axis=1
進行分組並取中位數:
df = df.set_index("Id")
df = df.groupby(df.columns.str.split("-").str[0], axis=1).median().reset_index()
# or get first 4 characters
# df = df.groupby(df.columns.str[:4], axis=1).median().reset_index()
Id 2015 2016 2017 2018
0 10 58400 57750 58150 59250
1 11 105150 107450 108750 109150
2 12 107100 105900 107100 108750
3 13 49250 47850 47700 47850
4 14 50100 51200 52150 51450
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.