如何使用熊猫从CSV文件的日期列中提取特定日期集?

时间:2019-05-10 10:34:32

标签: python-3.x pandas

我想从CSV文件的日期列中访问一些特定值,然后保存到另一个。

此处“ f”是我的csv文件的数据帧,“ now”是当前日期,“ f ['Date']”是必须处理的列, 逻辑:

如果当前日期是星期一,则从当前日期减去2天,然后将其存储在“ day”中,并访问f ['Date']列中与“ day”日期等效的日期。 否则,我们只减去1天并执行相同的操作。

now = date.today()
curr_day= now.strftime("%A")
now = now.strftime("%Y-%m-%d")

f['Date'] = pd.to_datetime(f['Date'])
# f['Date'] = f['Date'].apply( lambda x : x.strftime("%Y-%m-%d"))
f['Date'] = f['Date'].astype(str)
if curr_day == 'Monday':

    day = datetime.datetime.strptime(now,"%Y-%m-%d").date() - timedelta(days=2)
    day= day.strftime("%Y-%m-%d")
    f['Date']=f.loc[f['Date']==day]

else:

    day = datetime.datetime.strptime(now,"%Y-%m-%d").date() - timedelta(days=1)
    day= day.strftime("%Y-%m-%d")
    f['Date']=f.loc[f['Date']==day]

我有个约会可以说:DATE1 而且我只需要访问日期列中与DATE1等效的值,并保存到新的CSV文件中即可。

Date
01-Apr-19
02-Apr-19
03-Apr-19
14-Apr-19
18-Apr-19
14-Apr-19
14-Apr-19
14-Apr-19
01-Apr-19
10-Apr-19
01-Apr-19
01-Apr-19

假设DATE1 = 14-04-2019

然后,更新后的CSV将如下所示

Date
14-Apr-19
14-Apr-19
14-Apr-19
14-Apr-19

1 个答案:

答案 0 :(得分:0)


我以您指定的日期格式为准,并添加了我的回复。我正在为您的解决方案附加代码!

from datetime import datetime, timedelta
import pandas as pd

data['date'] = pd.to_datetime(data['Date'],format='%d-%b-%y')
data['date'] = data['date'].apply(lambda x: x.date())
now = datetime.now()
day = now.strftime("%A")
if day=='Monday':
    days_to_subtract = 2
    date_filter = datetime.today() - timedelta(days=days_to_subtract)
    new_data = data.loc[data['date']==(date_filter).date()]
    new_data.drop('date',1,inplace = True)
    new_data.reset_index(drop=True,inplace = True)
else:
    days_to_subtract = 1    
    date_filter = datetime.today() - timedelta(days=days_to_subtract)
    new_data = data.loc[data['date']==(date_filter).date()]
    new_data.drop('date',1,inplace = True)
    new_data.reset_index(drop=True,inplace = True)