在pandas列中的日期使用'isin'

时间:2017-09-30 21:39:40

标签: python pandas

我有以下代码导致以下数据框:

date=['1/1/2016','2/2/2017','4/8/2017','3/3/2015']
distance=['10','20','30','40']
dd=list(zip(date,distance))
df=pd.DataFrame(dd,columns=['date','distance'])

   date           distance
0  1/1/2016       10
1  2/2/2017       20
2  4/8/2017       30
3  3/3/2015       40

我想选择2017年的所有数据。如果我尝试以下操作,我会得到一个空数据框,因为它不包括月和日:

df=df[df['date'].isin(['2017'])]

有没有办法在不将日期列表分为月,日和年的情况下完成此操作?如果我必须分割日期,我将如何保持相应的距离?

2 个答案:

答案 0 :(得分:0)

df['date'] = pd.to_datetime(df['date'])
df = df[df['date'].dt.year == 2017]

答案 1 :(得分:0)

如果你想要的只是过滤'2017'。然后去做。

df[df.date.str.endswith('2017')