在Pandas DataFrame的每组中获取最上面的N条记录

  • Post category:Python

获取Pandas DataFrame中每组数据的最前面N条记录,可以用groupby()apply()函数实现。具体步骤如下:

  1. 对DataFrame进行分组,使用groupby()函数,以需要分组的列作为参数。例如,如果我们需要按照“group”这一列进行分组,写法如下:

python
grouped_df = df.groupby('group')

  1. 定义一个匿名函数,使用apply()函数将该函数应用到分组后的每个小组上。该匿名函数的输入是分组后的小组,输出是每个小组的前N条数据。例如,如果我们需要获取每个小组的前三条数据,可以这样定义匿名函数:

python
n = 3
top_n = lambda x: x.head(n)

这里使用了head()函数获取每个小组的前N条数据。

  1. 使用apply()函数将定义的匿名函数应用到各个小组上,结果将被合并为一个DataFrame返回。示例代码如下:

python
n = 3
grouped_df.apply(top_n)

例子:

“`python
import pandas as pd

df = pd.DataFrame({
‘group’: [‘A’, ‘A’, ‘A’, ‘B’, ‘B’, ‘C’],
‘value’: [1, 2, 3, 4, 5, 6]
})

grouped_df = df.groupby(‘group’)
n = 2
top_n = lambda x: x.head(n)

result = grouped_df.apply(top_n)
print(result)
“`

运行结果为:

group value
group
A 0 A 1
1 A 2
B 3 B 4
4 B 5
C 5 C 6

可以看到,结果中每个小组的前两条记录被输出了。