表1:
项目类型、订购日期、装船日期、采购费用
0例子2014-08-10 2014-08-10 850.7544
1小吃2014-08-10 2014-08-10 NaN
2化妆品2/22/2015 2/22/2015 NaN
3水果2015-09-12 2015-09-12 NaN
4个人护理9/17/2014 9/17/2014 NaN
5家庭2010-04-02 2010-04-02 NaN
6件衣服2/20/2013 2/20/2013 NaN
表2:
Item Type Purchase Start Date Purchase End Date Cost Per Unit
0婴儿食品2010-01-01 2010-05-01 158.2736
1饮料2010-01-01 2010-05-01 36.0620
2谷物2010-01-01 2010-05-01 160.4460
三件衣服2010-01-01 2010-05-01 66.6608
4化妆品2010-01 2010-05-01 266.6920
5水果2010-01-01 2010-05-01 5.5980
6住户2010-01-01 2010-05-01 467.7890
7肉类2010-01-01 2010-05-01 274.2285
在这里,我需要填写表1中的购买成本列,根据表2v日期和每个单元列的成本
例如,在表1中,家庭日期值介于(2010-04-02 ,2010-04-02),所以在表2中(2010-01-01 ,2010-05-01),所以从表1订购日期和发货日期都在“购买开始日期”和“购买结束日期”的日期范围内,所以我们可以将购买成本的价值填入“467.789”,那么如何填写采购成本呢?
发布于 2020-05-19 07:06:53
我假设所有“日期”列都已转换为datetime类型。否则,从转换它们开始。
生成辅助级数
wrk = pricing.assign(year=pricing['Start Date'].dt.year)\
.drop_duplicates(subset=['Item', 'year'])\
.set_index(['Item', 'year'])['(USD)dollar'].rename('price'); wrk
它包含每年的第一个价格和产品。产品名称(项目)和年份是MultiIndex的级别,价格是价值。
对于2014年用一行化妆品完成的样本数据,结果是:
Item year
Snacks 2010 68
2011 72
Cosmetics 2014 50
Name: price, dtype: int64
然后,要填充价格栏,请运行:
product.price = wrk[product.set_index(['Product',
product['Date (USD)'].dt.year]).index].tolist()
结果是:
Product Date (USD) price
0 Snacks 2010-02-03 68.0
1 Snacks 2010-02-06 68.0
2 Snacks 2014-02-03 NaN
3 Snacks 2012-02-03 NaN
4 Cosmetics 2012-02-03 NaN
5 Cosmetics 2013-02-03 NaN
6 Cosmetics 2013-02-08 NaN
7 Cosmetics 2014-02-06 50.0
8 Cosmetics 2014-02-09 50.0
https://stackoverflow.com/questions/61883831
复制相似问题