如何比较 pandas 中的日期:示例
您可以使用以下方法来比较 pandas DataFrame 中两列之间的日期:
方法 1:向 DataFrame 添加新列以显示日期比较
df[' met_due_date '] = df[' comp_date '] < df[' due_date ']
此特定示例添加了一个名为met_due_date的新列,该列根据comp_date列中的日期是否早于due_date列中的日期返回 True 或 False。
方法2:根据日期比较过滤DataFrame
df_met_due_date = df[df[' comp_date '] < df[' due_date ']]
此特定示例过滤 DataFrame 以仅保留comp_date列中的日期早于due_date列中的日期的行。
以下示例展示了如何在实践中通过以下 pandas DataFrame 使用这些方法:
import pandas as pd #createDataFrame df = pd. DataFrame ({' task ': ['A', 'B', 'C', 'D'], ' due_date ': ['4-15-2022', '5-19-2022', '6-14-2022', '10-24-2022'], ' comp_date ': ['4-14-2022', '5-23-2022', '6-24-2022', '10-7-2022']}) #convert due_date and comp_date columns to datetime format df[[' due_date ', ' comp_date ']] = df[[' due_date ', ' comp_date ']]. apply (pd. to_datetime ) #view DataFrame print (df) task due_date comp_date 0 A 2022-04-15 2022-04-14 1 B 2022-05-19 2022-05-23 2 C 2022-06-14 2022-06-24 3 D 2022-10-24 2022-10-07
示例 1:向 DataFrame 添加一个新列以显示日期比较
以下代码演示如何添加名为met_due_date的新列,该列根据comp_date列中的日期是否早于due_date列中的日期返回 True 或 False。
import pandas as pd #create new column that shows if completion date is before due date df[' met_due_date '] = df[' comp_date '] < df[' due_date '] #view updated DataFrame print (df) task due_date comp_date met_due_date 0 A 2022-04-15 2022-04-14 True 1 B 2022-05-19 2022-05-23 False 2 C 2022-06-14 2022-06-24 False 3 D 2022-10-24 2022-10-07 True
对于 DataFrame 中的每一行,新的met_due_date列指示comp_date列中的日期是否早于due_date列中的日期。
例如,我们可以看到任务 A 的截止日期为 04/15/2022,完成日期为 04/14/2022。
由于完成日期早于截止日期,因此met_due_date列的值为 True。
示例 2:根据日期比较过滤 DataFrame
以下代码显示如何过滤 DataFrame 以仅包含comp_date列中的日期早于due_date列中的日期的行。
import pandas as pd #filter for rows where completion date is before due date df_met_due_date = df[df[' comp_date '] < df[' due_date ']] #view results print (df_met_due_date) task due_date comp_date 0 A 2022-04-15 2022-04-14 3 D 2022-10-24 2022-10-07
新的 DataFrame 已被过滤为仅包含comp_date列中的日期早于due_date列中的日期的行。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作:
如何在 Pandas 中创建日期范围
如何在 Pandas 中将时间戳转换为日期/时间
如何计算pandas中两个日期之间的差异