gpt4 book ai didi

python - 如何在Python中的不均匀长度行上设置索引?

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:44 27 4
gpt4 key购买 nike

我正在尝试将第二个数据帧的索引设置为第一个数据帧的索引,以便我可以通过在所有数据帧中匹配的索引稍后引用行。

这样做的目的是让我能够引用原始需求数据帧以及在同一会计年度/周应用了 .rolling(window=X).mean() 的后续数据帧来执行一些计算.

我尝试过的

demand_df_7wkfwdavg = demand_df_7wkfwdavg.reindex_like(demand_df)

demand_df_7wkfwdavg = demand_df_7wkfwdavg.set_index(demand_df.index)

也引用了 reindex、set_index、reindex_like 的文档,但要么让新的数据帧从 201840 开始,直到 201846 为止为 NaN,要么得到一个错误,表示两个数据帧的索引之间的长度不匹配(其中他们不这样做,他们会 57 岁,65 岁)

让我们分解一下

我有两个数据帧,第一个是demand_df,第二个是demand_df_7wkfwdavg。

第一个数据框的设置如下,其中第一列是索引,也表示会计年度/周,第二列是该特定项目的需求值(列标题是该项目名称):

201840 344.75 
201841 433.75
201842 344.75
201843 355.75
201844 241.60
201845 241.60
201846 241.60

第二个数据帧以相同的方式设置,但在本例中将从 201846 开始,执行以下命令后:

###Applies a rolling average to each column using the window size specified
demand_df_7wkfwdavg = demand_df.rolling(window=7).mean()


###Fill any NaN's with zeroes
demand_df_7wkfwdavg = demand_df_7wkfwdavg.fillna(0)


###Round the numbers to 2 decimal places
demand_df_7wkfwdavg = demand_df_7wkfwdavg.round(2)


###Remove any row that sums zero
demand_df_7wkfwdavg = demand_df_7wkfwdavg.loc[(demand_df_7wkfwdavg!=0).any(axis=1)]

201846 314.54 
201847 299.81
201848 272.36

最终状态目标示例

获取本周的需求 (201840),查看所有其他数据帧并提取相应的值,因此在这种情况下,它将查看第二个数据帧并为第一个数据帧中的类似项目表示 201840 = 314.54,而不是201846 = 314.54。

期望的输出:

201840 314.54 
201841 299.81
201842 272.36

当前输出:

201846 314.54 
201847 299.81
201848 272.36

最佳答案

总结一下您的问题,您似乎想要前向均值,但实际上它正在计算尾随均值。对于索引问题有一些解决方案(例如切片),但我认为更有效的方法是在计算平均值时移动值。

如果你改变:

 demand_df_7wkfwdavg = demand_df.rolling(window=7).mean()

 demand_df_7wkfwdavg = demand_df.rolling(window=7).mean().shift(-6)

您无需添加任何步骤即可获得所需的输出。

关于python - 如何在Python中的不均匀长度行上设置索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54010666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com