【发布时间】:2021-08-02 00:03:27
【问题描述】:
我正在编写与库存管理相关的代码。我写了一个关于最迟日期的代码,为即将缺货的产品提供新产品。
这是我当前的数据。
df = pd.DataFrame({
'SKU' : ["20651","27394","28443","27766","23767","24704","27824","19612","27339","27851"],
'DailyMean': [6,9,6,7,9,3,4,8,7,1],
'Stock': [8,15,9,5,4,11,19,16,28,29],
'LeadTime': [5,6,6,8,3,7,4,1,8,1],
'alert': [False,False,False,False,False,False,True,True,False,True],
'LeadDate': ["2021-05-11","2021-05-11","2021-05-11","2021-05-11","2021-05-11","2021-05-11","2021-05-11","2021-05-11","2021-05-11","2021-05-11",]
})
SKU DailyMean Stock LeadTime alert LeadDate
0 20651 6 8 5 False 2021-05-11
1 27394 9 15 6 False 2021-05-11
2 28443 6 9 6 False 2021-05-11
3 27766 7 5 8 False 2021-05-11
4 23767 9 4 3 False 2021-05-11
5 24704 3 11 7 False 2021-05-11
6 27824 4 19 4 True 2021-05-11
7 19612 8 16 1 True 2021-05-11
8 27339 7 28 8 False 2021-05-11
9 27851 1 29 1 True 2021-05-11
这是我写的代码。
for i in range(len(df)):
new_stock = df.Stock[i]
x = 0
while((new_stock - (df.LeadTime[i] * df.DailyMean[i])) > 0):
new_stock = new_stock - (df.LeadTime[i] * df.DailyOrder[i])
if new_stock >= 0:
x = x + 1
df.LeadDate[i] = df.LeadDate[i] + datetime.timedelta(days=x)
这是我的预期。
SKU DailyMean Stock LeadTime alert LeadDate
0 20651 6 8 5 False 2021-05-11
1 27394 9 15 6 False 2021-05-11
2 28443 6 9 6 False 2021-05-11
3 27766 7 5 8 False 2021-05-11
4 23767 9 4 3 False 2021-05-11
5 24704 3 11 7 False 2021-05-11
6 27824 4 19 4 True 2021-05-12
7 19612 8 16 1 True 2021-05-12
8 27339 7 28 8 False 2021-05-11
9 27851 1 29 1 True 2021-06-08
这段代码也在大数据上运行了很长时间。如何优化此代码以更快地运行。
【问题讨论】:
-
确保数据不存储在代码文件中,而是以某种格式(例如 json、csv 等)存储在代码文件之外...
-
其实我是从 SQL 数据库中获取数据的
-
DailyMean 是计算列吗?因为我没有看到它包含在您的示例代码中?
-
数据库的大小是多少? (以兆字节为单位)因为对于某些非常大的数据库而言,在 SQL 上获取它可能会很慢
-
如果我错了,请纠正我,您是否能够检索整个数据库或者您必须进行多个查询
标签: python dataframe performance for-loop