我想从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
答案 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)