获取Pandas DataFrame中每组数据的最前面N条记录,可以用groupby()
和apply()
函数实现。具体步骤如下:
- 对DataFrame进行分组,使用
groupby()
函数,以需要分组的列作为参数。例如,如果我们需要按照“group”这一列进行分组,写法如下:
python
grouped_df = df.groupby('group')
- 定义一个匿名函数,使用
apply()
函数将该函数应用到分组后的每个小组上。该匿名函数的输入是分组后的小组,输出是每个小组的前N条数据。例如,如果我们需要获取每个小组的前三条数据,可以这样定义匿名函数:
python
n = 3
top_n = lambda x: x.head(n)
这里使用了head()
函数获取每个小组的前N条数据。
- 使用
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
可以看到,结果中每个小组的前两条记录被输出了。