gpt4 book ai didi

python Pandas : select 2nd smallest value in groupby

转载 作者:太空狗 更新时间:2023-10-29 22:22:26 26 4
gpt4 key购买 nike

我有一个如下所示的 DataFrame 示例:

import pandas as pd
import numpy as np
df = pd.DataFrame({'ID':[1,2,2,2,3,3,], 'date':array(['2000-01-01','2002-01-01','2010-01-01','2003-01-01','2004-01-01','2008-01-01'],dtype='datetime64[D]')})

我正在尝试获取每个 ID 组中的第 2 个最早的一天。所以我写了下面的函数:

def f(x):
if len(x)==1:
return x[0]
else:
x.sort()
return x[1]

然后我写道:

df.groupby('ID').date.apply(lambda x:f(x))

结果是错误的。

你能找到一种方法来完成这项工作吗?

最佳答案

这需要 0.14.1。并且会非常高效,尤其是当您有大型群组时(因为这不需要对它们进行完全排序)。

In [32]: df.groupby('ID')['date'].nsmallest(2)
Out[32]:
ID
1 0 2000-01-01
2 1 2002-01-01
3 2003-01-01
3 4 2004-01-01
5 2008-01-01
dtype: datetime64[ns]

In [33]: df.groupby('ID')['date'].nsmallest(2).groupby(level='ID').last()
Out[33]:
ID
1 2000-01-01
2 2003-01-01
3 2008-01-01
dtype: datetime64[ns]

关于 python Pandas : select 2nd smallest value in groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24943902/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com