gpt4 book ai didi

python - 在 Pandas 中过滤特定日期范围的数据框

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:19 24 4
gpt4 key购买 nike

我有一个数据框 df1,它包含三个包含日期类型数据的字段。称它们为 'Date 1'、'OC_Date'、'Date 2'。我想过滤此数据框以获得另一个数据框,以便它为我提供 'OC_Date' 位于 'Date 1''Date 2'< 之间的行:

Date 1 < OC_Date < Date 2

这三个字段中日期的格式如下:

Date 1 : YYYY-MM-DD
OC_Date: DD-MM-YYYY:HH:MM:SS # (MM is text, eg. JAN for January)
Date 2 : YYYY-MM-DD

提前致谢!

最佳答案

您可以先从字符串转换列 to_datetime然后使用 dt.date 按日期过滤和 boolean indexing :

import pandas as pd

df = pd.DataFrame({'Date 1':['2015-01-04','2015-01-05','2015-01-05'],
'OC_Date':['05-JAN-2015:10:10:20',
'05-JAN-2015:11:15:31',
'05-JAN-2015:08:05:09'],
'Date 2':['2015-01-06','2015-01-08','2015-01-10']})
df['Date 1'] = pd.to_datetime(df['Date 1'])
df['Date 2'] = pd.to_datetime(df['Date 2'])
#http://strftime.org/
df['OC_Date'] = pd.to_datetime(df['OC_Date'], format='%d-%b-%Y:%H:%M:%S')
print (df)
Date 1 Date 2 OC_Date
0 2015-01-04 2015-01-06 2015-01-05 10:10:20
1 2015-01-05 2015-01-08 2015-01-05 11:15:31
2 2015-01-05 2015-01-10 2015-01-05 08:05:09

print (df.dtypes)
Date 1 datetime64[ns]
Date 2 datetime64[ns]
OC_Date datetime64[ns]
dtype: object

mask = (df['Date 1'].dt.date < df['OC_Date'].dt.date) &
(df['OC_Date'].dt.date < df['Date 2'].dt.date)
print (mask)
0 True
1 False
2 False
dtype: bool

print (df[mask])
Date 1 Date 2 OC_Date
0 2015-01-04 2015-01-06 2015-01-05 10:10:20

关于python - 在 Pandas 中过滤特定日期范围的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com