作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个程序,该程序会将时间序列 excel 文件加载到数据框中,然后使用一些基本计算创建几个新列。我的程序有时会读取某些记录丢失数月的 excel 文件。所以在下面的例子中,我有两个不同商店的每月销售数据。商店在不同的月份开放,因此它们的第一个月底日期会有所不同。但两者都应该有截至 2020 年 9 月 30 日的月末数据。在我的文件中,Store BBB 没有 8/31/2020 和 9/30/2020 的记录,因为那几个月没有销售。
店铺
开业月份
状态
城市
月底日期
销售量
AAA
5/31/2020
纽约
纽约
5/31/2020
1000
AAA
5/31/2020
纽约
纽约
6/30/2020
5000
AAA
5/31/2020
纽约
纽约
7/30/2020
3000
AAA
5/31/2020
纽约
纽约
8/31/2020
4000
AAA
5/31/2020
纽约
纽约
2020/9/30
2000年
BBB
6/30/2020
计算机断层扫描
哈特福德
6/30/2020
100
BBB
6/30/2020
计算机断层扫描
哈特福德
7/30/2020
200
因此,对于这样的任何实例,我希望能够为 8/31 和 9/30 的 Store BBB 添加两行。新行应使用与最近月末日期相同的 Month Opened、State 和 City。两个新行的销售额都应设置为 0。截至目前,我执行以下步骤:
RequireBackfill_Stores_MostRecent = MaxDateData.where(MaxDateData['Max Month End Date'] <MaxDateData['Most Recent Date'])
RequireBackfill_MostRecent = MostRecent.merge(RequireBackfill_Stores_MostRecent,how='inner')
X=[]
end = MaxDateData['Most Recent Date'][0]
for i in MonthlyData['Month End Date'].unique():
per1 = pd.date_range(start = i, end = end, freq ='M')
for val in per1:
Data=[]
Data = RequireBackfill_MostRecent[["Store"
,"Month Opened"
,"City"
,"State"
]].where(RequireBackfill_MostRecent['Max Month End date']==i).dropna()
Data["Month End Date"]= val
Data["Sales"]= 0
X.append(Data)
NewData = pd.concat(X)
FullData_List = [MonthlyData,NewData]
FullData=pd.concat(FullData_List)
整个过程有效,但有没有更有效的方法来做到这一点?当我开始处理更大的数据时,这可能会变得昂贵。
最佳答案
upsample
日期时间索引。引用:pandas-resample-upsample-last-date-edge-of-data # group by `Store`
# with `Month End Date` column show be converted to DateTime
group.set_index(['Month End Date']).resample('M').asfreq()
7/30/2020
不是七月的结束日。 7/31/2020
是。所以使用这种方法7/30/2020
将是一个问题(将月结束日期转换为真正的结束日期)。 关于python - 如何为时间序列数据帧添加行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65516535/
我是一名优秀的程序员,十分优秀!