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

问题描述 投票:2回答:2

我是熊猫的新手,我正在试图找出特定列中前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'))

有人会指出我做错了吗?先谢谢你。

python pandas date
2个回答
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]

0
投票

通过内置sorted的一种方式:

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

# [Timestamp('2018-02-01 00:00:00'), Timestamp('2018-03-01 00:00:00')]
© www.soinside.com 2019 - 2024. All rights reserved.