【发布时间】:2023-01-26 21:30:11
【问题描述】:
我正在处理一个包含数百万行的大型数据框。
样本数据:
import pandas as pd
df = pd.DataFrame({'id' : ['c1','c2','c1','c3','c2','c1','c3'],
'it' : ['it1','it2','it1','it5','it3','it7','it'],
'score' : [.8,.5,1.1,.65,.89,1.2,.91]})
df
id it score
0 c1 it1 0.8
1 c2 it2 0.5
2 c1 it1 1.1
3 c3 it5 0.65
4 c2 it3 0.89
5 c1 it7 1.2
6 c3 it 0.91
我正在使用以下方法对每个组内的数据框进行排序:
df.groupby('id', as_index = False).\
apply(pd.DataFrame.sort_values, 'score', ascending=False)
id it score
0 5 c1 it7 1.2
0 2 c1 it1 1.1
0 0 c1 it1 0.8
1 4 c2 it3 0.89
1 1 c2 it2 0.5
2 6 c3 it 0.91
2 3 c3 it5 0.65
但是由于数据量很大,apply 的过程花费了大量时间。
有人可以让我知道如何以更省时的方式执行相同的操作吗?
【问题讨论】:
-
首先按
score对整个数据框进行排序,然后按id排序,我认为应该可以