【发布时间】:2020-10-24 16:22:29
【问题描述】:
我正在分析一个包含医疗训练营信息的数据集。 从这个训练营的开始日期和结束日期(日/月/年)开始,我创建了一个函数,列出了开始日期和结束日期之间的所有月份
import datetime
from dateutil.rrule import rrule, MONTHLY
def list_months_in_date(start_date: datetime, end_date : datetime) -> list :
strt_dt = datetime.datetime.strptime(start_date, "%d-%b-%y")
end_dt = datetime.datetime.strptime(end_date, "%d-%b-%y")
dates = [dt for dt in rrule(MONTHLY, dtstart=strt_dt, until=end_dt)]
distinct_months = []
months = [date.strftime("%B") for date in dates if date.strftime("%B") not in distinct_months]
distinct_months = list(set(months))
return distinct_months
我的功能是从一系列日期中获取季节
def list_months_to_season(distinct_months : list) -> list:
season = []
autumn = ["September","October","November"]
winter = ["December","January","February"]
summer = ["June","July","August"]
spring = ["March","April","May"]
for month in distinct_months:
if month in autumn :
season.append("autuumn")
if month in winter :
season.append("winter")
if month in spring :
season.append("spring")
if month in summer :
season.append("summer")
return season
我需要的是获取开始日期和结束日期之间的季节(夏季、春季、冬季、秋季) 为了拥有
|id_medicalcamp|start_date|end_date |seasons |
| 0010 |01/06/2019|01/09/2020|summer,autumn|
我正在运行以下代码
df_med_camps['season_label'] = df_med_camps.apply(lambda data : list_months_in_date(data["Camp_Start_Date"],data["Camp_End_Date"]))
这给了我错误 KeyError: 'Camp_Start_Date'
【问题讨论】:
-
使用
pd.Series.dt.month获取月份数,然后使用map直接进行季节。无需创建自定义函数。 -
也许我明白你的意思,但是如何将列表放入列 season_label ?
标签: python pandas list algorithm