Python 在熊猫数据框中查找第二个最近日期
我有一些数据,例如:Python 在熊猫数据框中查找第二个最近日期,python,pandas,Python,Pandas,我有一些数据,例如: 抽样调查日期 2017年8月29日 2017年8月29日 2017年8月29日 2016年2月28日 2016年2月28日 2014年5月15日 等等。。 现在我可以找到最大和最小日期 df.Sampled_Date.max() df.Sampled_Date.min() 但是如何找到第二个最近的日期。 i、 e 2/28/2016,在Python的熊猫数据框架中 首先确保您的日期在datetime中: df['Sampled_Date'] = pd.to_datetim
df.Sampled_Date.max()
df.Sampled_Date.min()
但是如何找到第二个最近的日期。
i、 e 2/28/2016,在Python的熊猫数据框架中 首先确保您的日期在datetime中:
df['Sampled_Date'] = pd.to_datetime(df['Sampled_Date'])
然后放下重复项,取最大值(2),然后取该值的最后一个值:
df['Sampled_Date'].drop_duplicates().nlargest(2).iloc[-1]
# Timestamp('2016-02-28 00:00:00')
首先确保您的日期在datetime中:
df['Sampled_Date'] = pd.to_datetime(df['Sampled_Date'])
然后放下重复项,取最大值(2),然后取该值的最后一个值:
df['Sampled_Date'].drop_duplicates().nlargest(2).iloc[-1]
# Timestamp('2016-02-28 00:00:00')
您还可以使用
.argsort()
您还可以使用
.argsort()
我知道这是问题的延伸,但这是我经常需要的东西,有时会忘记,所以我在这里分享: 比方说,您拥有一个包含用户和日期的数据框架,并且希望获得每个用户的第二个最早日期(例如,他们的第二个事务),而不是整个数据框架的第二个最新日期或第二个最早日期 数据帧示例:
test = pd.DataFrame()
test['users'] = [1,2,3,2,3,2]
test['dates'] = pd.to_datetime(['2019-01-01','2019-01-01',
'2019-01-02','2019-01-02',
'2019-01-03','2019-01-04'])
用户2的最早日期为“2019-01-01”,第二早日期为“20-19-01-02”。我们可以使用groupby、apply和nlargest/nsmallest:
test.groupby('users')['dates'].apply(lambda x: x.nsmallest(2).max())
这给了我们这个输出:
users
1 2019-01-01
2 2019-01-02
3 2019-01-03
Name: dates, dtype: datetime64[ns]
我知道这是问题的延伸,但这是我经常需要的东西,有时会忘记,所以我在这里分享: 比方说,您拥有一个包含用户和日期的数据框架,并且希望获得每个用户的第二个最早日期(例如,他们的第二个事务),而不是整个数据框架的第二个最新日期或第二个最早日期 数据帧示例:
test = pd.DataFrame()
test['users'] = [1,2,3,2,3,2]
test['dates'] = pd.to_datetime(['2019-01-01','2019-01-01',
'2019-01-02','2019-01-02',
'2019-01-03','2019-01-04'])
用户2的最早日期为“2019-01-01”,第二早日期为“20-19-01-02”。我们可以使用groupby、apply和nlargest/nsmallest:
test.groupby('users')['dates'].apply(lambda x: x.nsmallest(2).max())
这给了我们这个输出:
users
1 2019-01-01
2 2019-01-02
3 2019-01-03
Name: dates, dtype: datetime64[ns]