Python 基于另一列查找一列的最大最小值

Python 基于另一列查找一列的最大最小值,python,pandas,dataframe,datetime,data-analysis,Python,Pandas,Dataframe,Datetime,Data Analysis,我有一个看起来像这样的数据集 datetime id 2020-01-22 11:57:09.286 UTC 5 2020-01-22 11:57:02.303 UTC 6 2020-01-22 11:59:02.303 UTC 5 ID不是唯一的,并提供不同的日期时间值。比如说: 持续时间=最大(日期时间)-最小(日期时间) 我想计算持续时间max(datetime)-min(datetime)小于2秒的ID。例如,我将输出: count = 1 因为

我有一个看起来像这样的数据集

datetime                    id
2020-01-22 11:57:09.286 UTC 5
2020-01-22 11:57:02.303 UTC 6
2020-01-22 11:59:02.303 UTC 5
ID不是唯一的,并提供不同的日期时间值。比如说:

持续时间=最大(日期时间)-最小(日期时间)

我想计算持续时间max(datetime)-min(datetime)小于2秒的ID。例如,我将输出:

count = 1
因为身份证5。然后,我想创建一个新的数据集,该数据集只包含每个唯一ID具有min(datetime)值的行。因此,新数据集将包含第一行,但不包含第三行。最终数据集不应有任何重复的ID

datetime                    id
2020-01-22 11:57:09.286 UTC 5
2020-01-22 11:57:02.303 UTC 6
我怎样才能做到这些

备注:我提供的数据集可能不是一个很好的示例,因为条件是2秒,但在这里它以分钟为单位

您想要这个吗?:

df.datetime = pd.to_datetime(df.datetime)
c = 0
def count(x):
    global c
    x = x.sort_values('datetime')
    if len(x) > 1:
        diff = (x.iloc[-1]['datetime'] - x.iloc[0]['datetime'])
        if diff < timedelta(seconds=2):
            c += 1
            return x.head(1)

new_df = df.groupby('id').apply(count).reset_index(drop=True)
df.datetime=pd.to_datetime(df.datetime)
c=0
def计数(x):
全球c
x=x.sort_值('datetime')
如果len(x)>1:
diff=(x.iloc[-1]['datetime']-x.iloc[0]['datetime'])
如果差异<时间差(秒=2):
c+=1
返回x.head(1)
new_df=df.groupby('id')。apply(count)。reset_index(drop=True)

现在,如果打印
c
,它将显示本例中为1的计数,
new_df
将保存最终数据帧。

您应该发布原始数据帧,根据该原始数据帧导出例外输出。反向工程不可能这是原始数据帧,我需要@Anky的输出你能看到编辑吗@Anky你能解释一下吗?@Jbd Updated my answer在哪里应用它给了我
TypeError:不支持的操作数类型-:“str”和“str”
。另外,您能解释一下x.iloc[-1]['datetime']-x.iloc[0]['datetime']]正在做什么吗?您需要转换datetime列的数据类型,并且您确定要