这应该是一个简单的任务,但我不明白!
我有一个包含英超联赛足球数据的数据框架。我所要做的就是添加一个季节栏& &;使用日期设置季节,例如date = 2021-08-13, season = 2021.
Prem联盟
但是尽管我尽力了,还是不能使它工作。我该怎么做呢?最后尝试:
def get_season(row):
if (row['Date'] > pd.to_datetime("01/08/2021")):
season = "2021"
prem_data_new['Season'] = prem_data_new.apply(lambda row: get_season(row),axis = 1)
prem_data_new
- 检查prem_data_new['Date']类型
- 如果是datetime,使用如下命令
prem_data_new['Season'] = prem_data_new['Date'].year
- 如果没有尝试
prem_data_new['Date'] = pd.to_datetime(prem_data_new['Date'], errors='coerce')
,然后到达第2点
要获得季节,您可以尝试这个函数:
def func(ser):
lst = []
for i in range(len(ser)):
if ser[i].month < 8:
lst.append(ser[i].year)
else:
lst.append(ser[i].year + 1)
return lst
prem_data_new['Season'] = func(prem_data_new['Date'])
或
prem_data_new['Season'] = [x.year if x.month < 8 else x.year + 1 for x in prem_data_new['Date']]
您还可以使用map函数并定义一个函数来返回可分配给数据框字段的年份
由于您是根据月份和日期(例如8月1日)来决定季节的,因此您的函数应该比较日期字段的月份和日期。
演示:
import datetime
import pandas as pd
prem_data_new = pd.DataFrame({
'div':['e0','e0','e0','e0','e0'],
'date':['2021-08-13','2021-08-14','2020-07-30','2020-08-13','2021-08-01'],
'hometown':['Brentford','Man United','Burnley','Chelesa','Everton',],
'awayteam':['Arsenal','Leeds','Brighton','Crystal Palace','Southampton'],
'fthg':[2,5,1,3,3],
'ftag':[0,1,2,0,1],
'hthg':[1,1,1,2,0],
'htag':[0,0,0,0,1]
})
def get_season(row):
date_ser = pd.to_datetime(row['date'])
return date_ser.year if (date_ser.month >= 8 and date_ser.day >= 1) else date_ser.year - 1
prem_data_new['season'] = prem_data_new.apply(lambda row: get_season(row),axis = 1)
print(prem_data_new)
输出:
div date hometown awayteam fthg ftag hthg htag season
0 e0 2021-08-13 Brentford Arsenal 2 0 1 0 2021
1 e0 2021-08-14 Man United Leeds 5 1 1 0 2021
2 e0 2020-07-30 Burnley Brighton 1 2 1 0 2019
3 e0 2020-08-13 Chelesa Crystal Palace 3 0 2 0 2020
4 e0 2021-08-01 Everton Southampton 3 1 0 1 2021
检查日期是否在季节内:
- 检查季节是否与新年(
season.start.year !== season.end.year
)相交 - 如果是这种情况,拆分季节分为两部分
- 设置所有年份相同(季节开始/结束和date_to_check )
- 只需对这些部件进行
start < date < end
检查
这elïminates年+1/年1的问题立即。
- 。. NET linq查询 SQL查询
- jsfiddle