我是大熊猫的新手,我正在尝试找出特定列中前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'))
有人可以指出我做错了什么吗?先谢谢你。
答案 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')]