用python计算库存
考虑一个产品库存的数据框架(转换为字典以便在此处发布)用python计算库存,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,考虑一个产品库存的数据框架(转换为字典以便在此处发布) [ { "production_batch_start_date": "2019-07-15", "rm/pm_code": "abc", "consumed_qty": 0, "purchased_quantity": 0, "opening_stock": 58819.8 }, { "production_batch_start_date": "2019-07-15",
[
{
"production_batch_start_date": "2019-07-15",
"rm/pm_code": "abc",
"consumed_qty": 0,
"purchased_quantity": 0,
"opening_stock": 58819.8
},
{
"production_batch_start_date": "2019-07-15",
"rm/pm_code": "efg",
"consumed_qty": 0,
"purchased_quantity": 0,
"opening_stock": 0
},
{
"production_batch_start_date": "2019-07-15",
"rm/pm_code": "hij",
"consumed_qty": 150,
"purchased_quantity": 10,
"opening_stock": 39715.4
},
{
"production_batch_start_date": "2019-07-16",
"rm/pm_code": "abc",
"consumed_qty": 6807,
"purchased_quantity": 0,
"opening_stock": "nan"
},
{
"production_batch_start_date": "2019-07-16",
"rm/pm_code": "efg",
"consumed_qty": 11432,
"purchased_quantity": 0,
"opening_stock": "nan"
},
{
"production_batch_start_date": "2019-07-16",
"rm/pm_code": "hij",
"consumed_qty": 20,
"purchased_quantity": 5,
"opening_stock": "nan"
}
]
我想添加另一个名为库存
的专栏,它将为我提供每天结束时剩余的数量值。它可以通过将当天的购买数量
与前一天的库存相加,然后减去该特定日期的消费数量
来计算
期初库存
为我提供了盘点第一天的初始价值库存。其他所有日子都是NaN
预期产出:
[
{
"production_batch_start_date": "2019-07-15",
"rm/pm_code": "hij",
"purchased_quantity": 10,
"opening_stock": 39715.4,
"consumed_qty": 150,
"stock_in_hand": 39575.4
},
{
"production_batch_start_date": "2019-07-16",
"rm/pm_code": "hij",
"purchased_quantity": 5,
"opening_stock": "NaN",
"consumed_qty": 20,
"stock_in_hand": 39560
}
]
请让我知道如何在Python中实现这一点 我认为你需要用以下公式减去值:
你能添加预期的输出数据帧吗?@jezrael我已经添加了!!我要试试这个!谢谢
#if necessary sort data
df = df.sort_values(['production_batch_start_date', 'rm/pm_code'])
#if necessary aggregate data
#df=df.groupby(['production_batch_start_date', 'rm/pm_code'], as_index=False).sum(min_count=1)
df["stock_in_hand"] = df['opening_stock'].sub(df['consumed_qty'], fill_value=0)
df['stock_in_hand'] = df.groupby('rm/pm_code')['stock_in_hand'].cumsum()
print (df)
production_batch_start_date rm/pm_code consumed_qty purchased_quantity \
0 2019-07-15 abc 0 0
1 2019-07-15 efg 0 0
2 2019-07-15 hij 150 10
3 2019-07-16 abc 6807 0
4 2019-07-16 efg 11432 0
5 2019-07-16 hij 20 5
opening_stock stock_in_hand
0 58819.8 58819.8
1 0.0 0.0
2 39715.4 39565.4
3 NaN 52012.8
4 NaN -11432.0
5 NaN 39545.4