簡體   English   中英

如何根據 Pandas dataframe 中的日期值和條件創建新列

[英]How to create a new column based on Date Values & Condition in Pandas dataframe

表格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 個人護理 2014 年 9 月 17 日 2014 年 9 月 17 日 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

3 衣服 2010-01-01 2010-05-01 66.6608

4 化妝品 2010-01-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

在這里,我需要根據表 2 v Date & Cost Per Unit 列填寫表 1 中的采購成本列

例如在表 1 中的家庭日期值介於 (2010-04-02,2010-04-02) 之間,因此在表 2 中的家庭值介於 (2010-01-01,2010-05-01) 之間,因此從表 1 訂購日期和Ship Date在“Purchase start Date”和“Purchase End Date”的日期范圍內,因此我們可以將Purchase cost的值填寫為“467.789”,那么如何填寫Purchase cost?

我假設所有“日期”列都已轉換為日期時間類型。 否則從轉換它們開始。

生成一個輔助系列

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 年Cosmetics行中完成了一行,結果為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM