如何从系列中获得前2个日期

时间:2018-02-22 16:57:07

标签: python pandas date

我是大熊猫的新手,我正在尝试找出特定列中前2个日期的内容。我有一个名为“test”的excel表,我正在使用pandas进行连接。以下是该列的数据:

date_col
1/1/2018
2/1/2018
2/1/2018
2/1/2018    
1/1/2018
1/1/2018
1/1/2018
2/1/2018
2/1/2018
2/1/2018
2/1/2018
1/1/2018
1/1/2018
1/1/2018
2/1/2018
2/1/2018
3/1/2018
3/1/2018

但是,当我运行以下代码时:

print(test['date_col'].nlargest(2))

我明白了:

3   2018-03-01
4   2018-03-01
Name: date_col, dtype: datetime64[ns] 

我真正想要的是

3   2018-03-01
4   2018-02-01
Name: date_col, dtype: datetime64[ns] 

因为这些是前两个日期,无论重复日期如何。我尝试使用'first',但我得到了相同的结果:

print(test['date_col'].nlargest(2,'first'))

有人可以指出我做错了什么吗?先谢谢你。

2 个答案:

答案 0 :(得分:0)

您可以先添加drop_duplicates

print(test['date_col'].drop_duplicates().nlargest(2))
16   2018-03-01
1    2018-02-01
Name: date_col, dtype: datetime64[ns]

替代解决方案:

print(test['date_col'].drop_duplicates().sort_values(ascending=False).head(2))
16   2018-03-01
1    2018-02-01
Name: date_col, dtype: datetime64[ns]

答案 1 :(得分:0)

通过内置sorted的一种方式:

sorted(df['date_col'].drop_duplicates())[-2:]

# [Timestamp('2018-02-01 00:00:00'), Timestamp('2018-03-01 00:00:00')]