python - 创建一个函数来计算不同年份的中位数成本

标签 python pandas function median

我有一个示例数据集,其中包含不同年份的 ID 和成本,如下所示:

<表类="s-表"> <头> 编号 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 中创建一个函数来查找属于各自 id 的每年的中位数成本?我希望函数在开始和结束年份方面是动态的,这样如果新数据来自不同年份,代码将相应地计算变化。例如,如果有 2019 年的新数据,则结束日期将自动视为 2019 年而不是 2018 年,并分别计算其中位数。

使用上面给出的当前数据样本,结果应该如下所示:

<表类="s-表"> <头> 编号 <日>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

关于python - 创建一个函数来计算不同年份的中位数成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66520019/

相关文章:

python - 在python中将不同工作表中的列合并到单个工作表中

php - 来自动态函数名称的 Javascript 新对象实例

c++ - 从下拉框中选择不同的项目时更改选项卡小部件的 currentIndex()

python - 无法在 Docker 镜像中安装 Python 数学库

python - functools中lru缓存的使用

python - Qt - 不要在 QVBoxLayout 中拉伸(stretch)小部件

python - 当我合并两个 Pandas 数据帧时出现 MemoryError

python - 将 DataFrame 中的值替换为 pos_tags 字典

mysql - 使用MYSQL函数返回STRING类型

perl - 如何在 Perl 中回溯月份并考虑一个月中的不同日期?