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
需要位置参数列
。如何使它同时适用于两个非日期时间列?