python - Pandas:检查一个日期列是否位于两个日期列之间,如果 true 填充输出
问题描述
我有一个带有 3 个日期字段的 DataFrame purchaseDate
、releaseDate
和ceaseDate
。数据框示例如下所示。
Product purchaseDate releaseDate ceaseDate
ABC 20/12/2020 01/01/2021 02/01/2022
ZXC 15/01/2021 05/01/2021 02/01/2022
QWE 29/03/2021 06/01/2021 02/01/2022
ASD 13/04/2021 07/01/2021 02/01/2022
如果purchaseDate
介于releaseDate
和 之间,则应将ceaseDate
输出填充到新列中。如果它在这两个日期之外,它应该显示为。所需的输出如下所示。Active
Status
purchaseDate
Inactive
Product purchaseDate releaseDate ceaseDate status
ABC 20/12/2020 01/01/2021 02/01/2022 Inactive
ZXC 04/01/2021 05/01/2021 02/01/2022 Inactive
QWE 29/03/2021 06/01/2021 02/01/2022 Active
ASD 13/04/2021 07/01/2021 02/01/2022 Active
任何可以提供的帮助将不胜感激。
解决方案
将日期列转换为datetime
类型和使用between
函数
date_columns = df.filter(regex='Date').columns
df[date_columns] = df[date_columns].apply(pd.to_datetime, format='%d/%m/%Y')
用于np.where
根据条件插入值
in_between = df.purchaseDate.between(df.releaseDate, df.ceaseDate)
df['status'] = np.where(in_between, 'Active', 'Inactive')
print(df)
输出
Product purchaseDate releaseDate ceaseDate status
0 ABC 2020-12-20 2021-01-01 2022-01-02 Inactive
1 ZXC 2021-01-15 2021-01-05 2022-01-02 Active
2 QWE 2021-03-29 2021-01-06 2022-01-02 Active
3 ASD 2021-04-13 2021-01-07 2022-01-02 Active
注意:不要忘记import numpy as np
推荐阅读
- angular - Angular Material design 7,未找到组件
- javascript - 使用功能组件传递道具而不在组件内声明功能
- reactjs - React-native firebase 5.6.0 Objects are not valid react child
- cassandra - 我应该将 Cassandra 2.0.17 升级到 3.0.x 吗?还是重新安装?
- vba - Microsoft Access 附加 VBA
- python - 如何在 matplotlib 中设置 x 轴?
- sql-server - 远程连接到 SQL Server 的第二个实例
- android - 数组列表
方法返回一个从firebase获取数据的空数组 - java - 从控制器返回xml时如何解包地图
- junit - NotAMockException / 如何在 Kotlin 的参数化测试中存根值?