Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python计算库存_Python_Pandas_Pandas Groupby - Fatal编程技术网

用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