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

2023-10-19Python开发问题
7

本文介绍了如何在 pandas 数据框中对最大和最小时间戳进行分组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

I want to group a dataset and return the maximum and minimum timestamp. Here's my data

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 上有更好的方法来做到这一点

Here's what I did, the code seems not efficient, I hope theres better way to do this on 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)

熊猫似乎有这种枢轴

推荐答案

我觉得需要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

或者稍微修改一下你的解决方案(应该会更快):

Or a bit modify your solution (should be faster):

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

这篇关于如何在 pandas 数据框中对最大和最小时间戳进行分组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

在xarray中按单个维度的多个坐标分组
groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)...
2024-08-22 Python开发问题
15

Pandas中的GROUP BY AND SUM不丢失列
Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)...
2024-08-22 Python开发问题
17

pandas 有从特定日期开始的按月分组的方式吗?
Is there a way of group by month in Pandas starting at specific day number?( pandas 有从特定日期开始的按月分组的方式吗?)...
2024-08-22 Python开发问题
10

GROUP BY+新列+基于条件的前一行抓取值
Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)...
2024-08-22 Python开发问题
18

PANDA中的Groupby算法和插值算法
Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)...
2024-08-22 Python开发问题
11

PANAS-基于列对行进行分组,并将NaN替换为非空值
Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)...
2024-08-22 Python开发问题
10