2024-05-15 10:56:54 发布
网友
我有一个pandas数据帧,如果它的列是datetime格式(year-month-day)。有没有办法创建一个新的专栏,说周末或工作日,以及一个专栏,说这是什么季节?更妙的是(但这一次似乎更复杂,所以不是完全必要的)也将是是否是一个联邦假日(美国)。你知道吗
year-month-day
例如,日期2019-10-23的一个实例是星期三,所以我想创建一个名为day_type的列来填充“weekday”,一个名为season的列来填充“fall”。你知道吗
day_type
season
strftime很简单:
import pandas as pd df = pd.DataFrame({'string_date': ['2019-10-23', '2019-10-24', '2019-10-23']}) df['date'] = pd.to_datetime(df['string_date'], format='%Y-%m-%d', errors='ignore') df['day_of_week'] = df['date'].dt.strftime('%A')
结果1:
string_date date day_of_week 0 2019-10-23 2019-10-23 Wednesday 1 2019-10-24 2019-10-24 Thursday 2 2019-10-23 2019-10-23 Wednesday
添加季节可以使用以下公式: Link
df['season'] = (df['date'].dt.month%12 + 3)//3
结果2:
string_date date day_of_week season 0 2019-10-23 2019-10-23 Wednesday 4 1 2019-10-24 2019-10-24 Thursday 4 2 2019-10-23 2019-10-23 Wednesday 4
Strftime参考: http://strftime.org/
我编写了一个函数,它采用“yyyy-mm-dd”格式的字符串参数,并返回季节和星期几的元组。请根据您的需要修改功能。你知道吗
from datetime import date, datetime def date_week(date_str): """ this method returns season and day of week tuple from str arg in the format 'yyyy-mm-dd' """ datetime_obj = datetime.strptime(date_str, '%Y-%m-%d') weekdays = {0:'monday', 1:'tuesday', 2:'wednesday', 3:'thursday', 4:'friday', 5:'saturday', 6:'sunday'} day_of_week = weekdays[datetime_obj.weekday()] # returns day of week Y = 2000 # dummy leap year to allow input X-02-29 (leap day) seasons = [('winter', (date(Y, 1, 1), date(Y, 3, 20))), ('spring', (date(Y, 3, 21), date(Y, 6, 20))), ('summer', (date(Y, 6, 21), date(Y, 9, 22))), ('autumn', (date(Y, 9, 23), date(Y, 12, 20))), ('winter', (date(Y, 12, 21), date(Y, 12, 31)))] if isinstance(datetime_obj, datetime): datetime_obj = datetime_obj.date() datetime_obj = datetime_obj.replace(year=Y) season = next(season for season, (start, end) in seasons if start <= datetime_obj <= end) # returns season return day_of_week, season
如果我们调用date_week("2019-10-23"),它将返回('wednesday', 'autumn')
date_week("2019-10-23")
('wednesday', 'autumn')
strftime很简单:
结果1:
添加季节可以使用以下公式: Link
结果2:
Strftime参考: http://strftime.org/
我编写了一个函数,它采用“yyyy-mm-dd”格式的字符串参数,并返回季节和星期几的元组。请根据您的需要修改功能。你知道吗
如果我们调用
date_week("2019-10-23")
,它将返回('wednesday', 'autumn')
相关问题 更多 >
编程相关推荐