首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Pandas dataframe中基于日期值和条件创建新列

如何在Pandas dataframe中基于日期值和条件创建新列
EN

Stack Overflow用户
提问于 2020-05-19 05:26:37
回答 1查看 1.9K关注 0票数 0

表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:

代码语言:javascript
运行
复制
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”,那么如何填写采购成本呢?

EN

回答 1

Stack Overflow用户

发布于 2020-05-19 07:06:53

我假设所有“日期”列都已转换为datetime类型。否则,从转换它们开始。

生成辅助级数

代码语言:javascript
运行
复制
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年用一行化妆品完成的样本数据,结果是:

代码语言:javascript
运行
复制
Item       year
Snacks     2010    68
           2011    72
Cosmetics  2014    50
Name: price, dtype: int64

然后,要填充价格栏,请运行:

代码语言:javascript
运行
复制
product.price = wrk[product.set_index(['Product',
    product['Date (USD)'].dt.year]).index].tolist()

结果是:

代码语言:javascript
运行
复制
     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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61883831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档