【发布时间】:2023-02-04 14:14:56
【问题描述】:
df1是盒子里的信息。 每个盒子都有不同的体积大小 盒子A的体积是30,B是25,等等。
df1 = pd.DataFrame({'boxID':['A', 'B', 'C', 'D'],'volume':[30,25,30,10]})
df1.set_index("boxID")
volume
boxID
A 30
B 25
C 30
D 10
df2是产品的信息 每个产品都有不同的数量
df2 = pd.DataFrame({'Product No':['1', '2', '3', '4', '5', '6', '7'],'amount':[10, 5, 13, 15, 20, 10, 17]})
df2.set_index("Product No")
amount
Product No
1 10
2 5
3 13
4 15
5 20
6 10
7 17
插入df2 的“box id”列找到并匹配适当的盒子IDdf1。就像底部的数据框。
output_df2 = pd.DataFrame({'Product No':['1', '2', '3', '4', '5', '6', '7'],'amount':[10, 5, 13, 15, 20, 10, 17], 'box ID':['A', 'A', 'A', 'B', 'C', 'C', 'D']})
output_df2.set_index("Product No")
amount box ID
Product No
1 10 A
2 5 A
3 13 A
4 15 B
5 20 C
6 10 C
7 17 D
从上往下依次添加数量(df2),接近每个箱子体积(df1)但不超过每个箱子
例如,由于df1的第一个盒子体积是30, 所以它可以包含 df2 的第一行产品(数量 10),第二行(数量 5)和第三行(数量 13) 等于 30,因为 10+5+13 = 28。 (但是,如果加到第4行,10+5+13+15 = 43,超过了30
Python还是初学者,请各位高手多多指教。这对我来说是一项非常重要的任务。
在 df2 的 box id 列中匹配 df1 的适当 box id。
【问题讨论】:
标签: python pandas dataframe mapping match