#仓库产品库存dc_inventory data1 = pd.read_csv('D:\运筹优化\杉数科技比赛\data\dc_inventory.csv') grouped = df.groupby(['dc_id', 'sku_id']).sum() results = [] for dc, group in grouped.groupby('dc_id'): dc_results = [] for index, row in group.iterrows(): dc_results.append(row['available_inv']) results.append(dc_results) print(results)中识别每个仓库中产品的库存,给没有库存数据的产品数组中填零
时间: 2023-11-22 14:51:49 浏览: 38
可以尝试使用pivot_table()函数将数据透视成以dc_id和sku_id为行列的形式,然后用fillna()函数填充缺失值。示例代码如下:
```
import pandas as pd
# 读取数据
data1 = pd.read_csv('D:\运筹优化\杉数科技比赛\data\dc_inventory.csv')
# 使用pivot_table()函数透视数据
table = pd.pivot_table(data1, values='available_inv', index=['dc_id'], columns=['sku_id'], aggfunc=sum)
# 填充缺失值
table.fillna(0, inplace=True)
# 转换成list
results = table.values.tolist()
print(results)
```
注意:如果数据中存在非数字的字符或者空字符,可能会导致数据类型错误,需要先进行数据清洗。另外,代码中使用了inplace=True参数,表示直接修改原始数据,如果不需要修改原始数据,可以去掉该参数。
相关问题
import pandas as pd # 读取数据 data1 = pd.read_csv('D:\运筹优化\杉数科技比赛\data\dc_inventory.csv') # 使用pivot_table函数透视数据,填充缺失值为0 pivoted = data1.pivot_table(values='available_inv', index=['dc_id'], columns=['sku_id'], fill_value=0) # 将透视后的数据转化为列表 results = pivoted.values.tolist() print(results)中每个仓库的产品数量是多少
在你提供的代码中,使用了 pandas 库的 pivot_table 函数将原始数据透视成了以仓库ID(dc_id)为行索引,产品ID(sku_id)为列索引,可用库存数量(available_inv)为值的二维表格。而 results 变量则将透视后的数据转换为了一个列表。
因此,results 列表中每个元素都是一个仓库的产品可用库存数量列表,列表的长度就是产品的数量。你可以通过 results 列表中的每个子列表来获取每个仓库的产品数量。例如,results[0] 就是第一个仓库中每个产品的可用库存数量列表。
#产品销售量 data5 = pd.read_csv('D:\运筹优化\杉数科技比赛\data\test_sales_data.csv') # 构建长度为77的数组并初始化为0 PS = [0] * 77 # 根据第一列汇总求和销售量,并将结果填入数组 for i, row in data5.iterrows(): if row['sku_id'][:3] == 'SKU': idx = int(row['sku_id'][3:]) - 1 PS[idx] += row['sale'] # 输出结果 print(PS)在代码中加入以dc_id区分销售量
你可以尝试修改代码如下:
```
data5 = pd.read_csv('D:\运筹优化\杉数科技比赛\data\test_sales_data.csv')
# 构建长度为77的数组并初始化为0
PS = [0] * 77
# 根据第一列汇总求和销售量,并将结果填入数组
for i, row in data5.iterrows():
if row['sku_id'][:3] == 'SKU':
idx = int(row['sku_id'][3:]) - 1
dc_id = row['dc_id'] - 1 # 获取dc_id并减一得到下标
PS[idx][dc_id] += row['sale'] # 在对应下标的dc_id上累加销售量
# 输出结果
print(PS)
```
这样修改后,你就可以根据dc_id分别统计每个仓库的销售量了。其中PS数组的第一维代表商品编号,第二维代表dc_id。