gpt4 book ai didi

python - 如何在 Pandas 数据框中对最大和最小时间戳进行分组

转载 作者:行者123 更新时间:2023-11-28 21:37:22 25 4
gpt4 key购买 nike

我想对数据集进行分组并返回最大和最小时间戳。这是我的数据

id  timestamp
1 2017-09-17 10:09:01
2 2017-10-02 01:13:15
1 2017-09-17 10:53:07
1 2017-09-17 10:52:18
2 2017-09-12 21:59:40

这是我想要的输出
id    max                   min
1 2017-09-17 10:53:07 2017-09-17 10:09:01
2 2017-10-02 01:13:15 2017-09-12 21:59:40

这是我所做的,代码似乎效率不高,我希望有更好的方法在 Pandas 上做到这一点
data1 = df.sort_values('timestamp').drop_duplicates(['customer_id'], keep='last')
data2 = df.sort_values('timestamp').drop_duplicates(['customer_id'], keep='first')
data1['max'] = data1['timestamp']
data2['min'] = data2['timestamp']
data = data1.merge(data2, on = 'customer_id', how='left')
data = data.drop(['timestamp_x','timestamp_y'], axis=1)

Pandas 似乎有这种枢轴

最佳答案

我觉得需要 agg :

df = df.groupby('id')['timestamp'].agg(['min','max']).reset_index()
print (df)
id min max
0 1 2017-09-17 10:09:01 2017-09-17 10:53:07
1 2 2017-09-12 21:59:40 2017-10-02 01:13:15

或者稍微修改一下您的解决方案(应该更快):
data = df.sort_values('timestamp')
data1 = data.drop_duplicates(['id'], keep='last').set_index('id')
data2 = data.drop_duplicates(['id'], keep='first').set_index('id')

df = pd.concat([data1['timestamp'], data2['timestamp']],keys=('max','min'), axis=1)

print (df)
max min
id
1 2017-09-17 10:53:07 2017-09-17 10:09:01
2 2017-10-02 01:13:15 2017-09-12 21:59:40

关于python - 如何在 Pandas 数据框中对最大和最小时间戳进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49666085/

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