在特定年份 Pandas 之后删除行

abh*_*emp 5 python pandas

我的数据框中有一列,其中包含以下格式的年份:

2018-19
2017-18
Run Code Online (Sandbox Code Playgroud)

年份是对象数据类型。我想将此列的类型更改为日期时间,然后删除 1979-80 之前的所有行。但是,我尝试这样做,但出现了格式错误。这样做的正确或更好的方法是什么?

2018-19
2017-18
Run Code Online (Sandbox Code Playgroud)

我对 Python 很陌生,所以如果你能告诉我我做错了什么,我将不胜感激。谢谢!

jez*_*ael 4

我认为这是最简单的分别比较年份,例如之前-

print (BOS)
    Season
0  1979-80
1  2018-19
2  2017-18


df = BOS[BOS['Season'].str.split('-').str[0].astype(int) < 2017]
print (df)
    Season
0  1979-80
Run Code Online (Sandbox Code Playgroud)

细节

首先将值分割为Series.str.split列表,然后选择第一个列表:

print (BOS['Season'].str.split('-'))
0    [1979, 80]
1    [2018, 19]
2    [2017, 18]
Name: Season, dtype: object

print (BOS['Season'].str.split('-').str[0])
0    1979
1    2018
2    2017
Name: Season, dtype: object
Run Code Online (Sandbox Code Playgroud)

或者将这两个年份转换为单独的列:

BOS['start'] = pd.to_datetime(BOS['Season'].str.split('-').str[0],  format='%Y').dt.year
BOS['end'] =  BOS['start'] + 1
print (BOS)
    Season  start   end
0  1979-80   1979  1980
1  2018-19   2018  2019
2  2017-18   2017  2018
Run Code Online (Sandbox Code Playgroud)