Python 熊猫按日期重新采样并选择第二个最小值

Python 熊猫按日期重新采样并选择第二个最小值,python,pandas,datetime,Python,Pandas,Datetime,我有一个数据框,看起来像 2020-01-07 09:00:00,22,228 2020-01-07 10:00:00,22,228 2020-01-07 11:00:00,22,228 2020-01-07 12:00:00,22,228 2020-01-07 13:00:00,22,228 2020-01-07 14:00:00,22,228 2020-01-07 15:00:00,21,228 2020-01-07 16:00:00,22,228 2020-01-08 09:00:00,4

我有一个数据框,看起来像

2020-01-07 09:00:00,22,228
2020-01-07 10:00:00,22,228
2020-01-07 11:00:00,22,228
2020-01-07 12:00:00,22,228
2020-01-07 13:00:00,22,228
2020-01-07 14:00:00,22,228
2020-01-07 15:00:00,21,228
2020-01-07 16:00:00,22,228
2020-01-08 09:00:00,43,45
2020-01-08 10:00:00,44,45
2020-01-08 11:00:00,41,45
2020-01-08 12:00:00,47,43
我想通过数据得到每列的第二个最小值。 我知道我可以通过执行
df=df.resample('D',on='DateTime').min()
来获得最小值,并且我知道
nsmallest(n=2)
last
可以结合起来得到我需要的

如何将
重采样
nsmallest
一起使用?

与自定义函数一起使用以返回一些值,例如
NaN
如果不存在第二个最小值:

def f(x):
    v= x.nsmallest(2)
    try:
        return v.iat[1]
    except:
        return np.nan

df = df.resample('D', on='DateTime').agg(f)
如果想要第二个唯一的最小值:

def f(x):
    v = np.sort(np.unique(x))
    try:
        return v[1]
    except:
        return np.nan

nsmallest
需要位置参数
。如何使它同时适用于两个非日期时间列?