簡體   English   中英

創建一個 function 以計算不同年份的中位數成本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM