sales_data = {
'order_number': [1001, 1002, 1003, 1004, 1005],
'order_date': ['2022-02-01', '2022-02-03', '2022-02-07', '2022-02-10', '2022-02-14']
}
sales_data = pd.DataFrame(sales_data)
capacity_data = {
'date': pd.date_range(start='2022-02-01', end='2022-02-28', freq='D'),
'capacity': [0, 0, 0, 1, 1, 100, 110, 120, 130, 140, 150, 160, 170, 180,
190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 310]
}
capacity_data = pd.DataFrame(capacity_data)
我想这样输出
output = {'order_number': [1001, 1002, 1003, 1004, 1005], 'confirmation_date':['2022-02-04', '2022-02-05', '2022-02-06', '2022-02-06', '2022-02-06']
我只想找到容量空闲的最近日期,如果空闲,则为下一次迭代减少一个容量。
这是我的剧本:
order_number = None
confirmation_date = None
grouped = sales_data['order_number'].unique()
# Iterate over the groups and rows within each group
for group in grouped:
for order_row in range(len(capacity_data)):
if capacity_data['capacity'][order_row] > 0:
try:
order_number.append(group)
confirmation_date.append(capacity_data['date'][order_row])
capacity_data['capacity'][order_row] = capacity_data['capacity'][order_row] - 1
except:
pass
else:
pass
orderdict = dict(zip(order_number, caonfirmation_date))
我还想问一下,是否有办法使此脚本在遍历超过100k行时更加优化
2条答案
按热度按时间ut6juiuv1#
您可以这样做:
返回输出:
尝试在完整数据上使用它。如果速度太慢,请按以下方式使用
apply()
:这就给了你
sbtkgmzw2#
我想你是想在订单到达并且有货的情况下确认订单,你可以按照下面的代码来实现。