首页 > 解决方案 > 基于日期时间对象添加季节列时遇到问题

问题描述

我正在尝试完成我的工作项目,但我被困在某个点上。

我拥有的数据框的一部分是这样的:

年月
2007-01 2007年 1
2009-07 2009 7
2010-03 2010 3

但是,我想添加“季节”列。我正在说明足球赛季,赛季专栏需要说明球员踢的赛季。所以如果month等于或小于3,“season”列需要对应((year-1),“/”,year),如果大于(year,“/”,(year + 1))。该表应如下所示:

年月 季节
2007-01 2007年 1 2006/2007
2009-07 2009 7 2009/2010
2010-03 2010 3 2009/2010

希望其他人可以帮助我解决这个问题。

这是创建第一个表的代码:

import pandas as pd
from datetime import datetime

df = pd.DataFrame({'year_month':["2007-01", "2009-07", "2010-03"],
                  'year':[2007, 2009, 2010],
                  'month':[1, 7, 3]})

# convert the 'Date' columns to datetime format
df['year_month']= pd.to_datetime(df['year_month'])

提前致谢!

标签: pythonpandasdataframemultiple-columns

解决方案


可以使用来指定条件,根据条件的/np.where()获取对应的字符串,如下:TrueFalse

df['season'] = np.where(df['month'] <= 3, 
                        (df['year'] - 1).astype(str) + '/' + df['year'].astype(str), 
                        df['year'].astype(str) + '/' + (df['year'] + 1).astype(str))

结果:

  year_month  year  month     season
0 2007-01-01  2007      1  2006/2007
1 2009-07-01  2009      7  2009/2010
2 2010-03-01  2010      3  2009/2010

推荐阅读