python怎么提取数据表中的前10行成为一个新的数据框_python – 从Pandas数据框中获取最后一个条目的最佳方法...

解决此问题的另一种方法是在groupby上使用聚合,然后在完整数据帧上进行选择.

df.iloc[df.groupby('id')['date'].idxmax()]

这似乎比您提出的解决方案快5-10倍(见下文).请注意,这仅在’date’列是数字而不是字符串类型时才有效,并且此转换还可以加快基于排序的解决方案:

# Timing your original solutions:

%timeit df.groupby('id').apply(lambda t: t[t.date==t.date.max()])

# 1 loops, best of 3: 826 ms per loop

%timeit df.reindex(df.sort_values(["date"], ascending=False)["id"].drop_duplicates().index)

# 100 loops, best of 3: 5.1 ms per loop

# convert the date

df['date'] = pd.to_datetime(df['date'])

# new times on your solutions

%timeit df.groupby('id').apply(lambda t: t[t.date==t.date.max()])

# 1 loops, best of 3: 815 ms per loop

%timeit df.reindex(df.sort_values(["date"], ascending=False)["id"].drop_duplicates().index)

# 1000 loops, best of 3: 1.99 ms per loop

# my aggregation solution

%timeit df.iloc[df.groupby('id')['date'].idxmax()]

# 10 loops, best of 3: 135 ms per loop

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值