- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将第二个数据帧的索引设置为第一个数据帧的索引,以便我可以通过在所有数据帧中匹配的索引稍后引用行。
这样做的目的是让我能够引用原始需求数据帧以及在同一会计年度/周应用了 .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/
我是一名优秀的程序员,十分优秀!