我的数据框如下:
df:
date value
20171231 500
20161231 321.25
20111512 234
20151215 900.7
19900101 6252.1
19791131 123
...
其中date列是一个整数,格式为YYYYMMDD。在转换为 pd.to_datetime 之前,我想过滤此列,其中有效日期介于1980年至今。
执行此操作的有效方法是什么?使用regexp或任何其他可用的pandas方法?
答案 0 :(得分:1)
您可以使用to_datetime
转换为参数errors='coerce'
的日期时间,然后使用boolean indexing
或双重条件按between
进行过滤:
today = pd.datetime.today()
print (today)
2018-01-09 10:51:42.701585
df['date'] = pd.to_datetime(df['date'], format='%Y%m%d', errors='coerce')
df = df[df['date'].between('1980-01-01', today)]
df = df[(df['date'] > '1980-01-01') & (df['date'] < today)]
df = df.query("'1980-01-01' < date < @today")
print (df)
date value
0 2017-12-31 500.00
1 2016-12-31 321.25
3 2015-12-15 900.70
4 1990-01-01 6252.10