R中如何统计dataframe内各名称对应time的最值、出现次数并按最小time排序
解决方案
直接使用pandas的分组聚合功能即可一次性得到所有需要的指标,无需单独计算唯一名称和对应次数:
前置操作
先确保time列是 datetime 类型,避免字符串比较导致最值计算错误:
import pandas as pd df['time'] = pd.to_datetime(df['time'])
核心处理代码
result_df = df.groupby('names', as_index=False).agg( # 统计每个名称的出现次数 count=('names', 'count'), # 统计每个名称的最小时间 min_time=('time', 'min'), # 统计每个名称的最大时间 max_time=('time', 'max') # 按最小时间升序排序,ignore_index会重置排序后的行索引 ).sort_values(by='min_time', ignore_index=True) # 如果需要列名改为min.time、max.time,可执行重命名 result_df.rename(columns={'min_time': 'min.time', 'max_time': 'max.time'}, inplace=True)
结果说明
输出的result_df自动包含唯一names列,以及你需要的出现次数、最小时间、最大时间三个新列,且已经按最小时间从小到大排序。
内容的提问来源于stack exchange,提问作者Phenomniverse
相关产品推荐
相关产品推荐

