繁体   English   中英

如何在 pandas dataframe 中添加基于日期条件的值的列?

[英]How to add a column with value based on date condition in pandas dataframe?

我有一个带有以下示例列的 dataframe。

我在日期列中有每日数据。 我想根据日期添加具有特定值的列。

如果日期在 29 之前,那么它应该在 12/29 之前的值包含在新的日期范围列中,在 30 之后意味着它应该包括在 12/30 之后,与其他相同。

Date        product        result
12/27/2021  tv              6
12/27/2021  tv             38
12/27/2021  tv             2
12/28/2021  broadband      5        
12/29/2021  tv             6                
12/30/2021  broadband      7
12/30/2021  tv             10
12/31/2021  broadband      48
01/06/2022  broadband      48

Expected output



Date          day_range         product        result
12/27/2021    before 12/29      tv              6
12/27/2021    before 12/29      tv              38
12/27/2021    before 12/29      tv              2
12/28/2021    before 12/29      broadband       5       
12/29/2021    29-Dec            tv              6               
12/30/2021    30-Dec            broadband       7
12/30/2021    30-Dec            tv              10
12/31/2021    After 12/30       broadband       48
01/06/2022    After 12/30       broadband       4

有什么方法可以实现这一点

利用:

df['Date'] = pd.to_datetime(df['Date'])

 
df['day_range'] = np.select([df['Date'].lt('2021-12-29'),  
                             df['Date'].gt('2021-12-30')], 
                            ['before 12/29','After 12/30'], 
                            default=df['Date'].dt.strftime('%d-%b'))

print (df)
        Date    product  result     day_range
0 2021-12-27         tv       6  before 12/29
1 2021-12-27         tv      38  before 12/29
2 2021-12-27         tv       2  before 12/29
3 2021-12-28  broadband       5  before 12/29
4 2021-12-29         tv       6        29-Dec
5 2021-12-30  broadband       7        30-Dec
6 2021-12-30         tv      10        30-Dec
7 2021-12-31  broadband      48   After 12/30
8 2022-01-06  broadband      48   After 12/30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM