要在Pandas DataFrame的每组中获取最上面的N条记录,我们可以使用groupby和head方法的组合。使用groupby方法将数据按照某一列或多列进行分组,然后再使用head方法获取每组的前N条记录。
下面是具体步骤:
- 使用pandas库读取数据。例如,我们可以使用以下代码读取名为“data.csv”的CSV文件,并将其保存为名为“df”的DataFrame对象:
import pandas as pd
df = pd.read_csv("data.csv")
- 使用groupby方法将数据按照一列或多列进行分组。例如,我们可以使用以下代码将数据按照“category”列进行分组:
grouped = df.groupby("category")
- 对于每个组,使用head方法获取前N条记录。例如,我们可以使用以下代码获取每个组的前3条记录:
n = 3
result = grouped.apply(lambda x: x.head(n))
在这个代码中,我们使用apply方法将head方法应用到每个组上,并且将每个组中前3条记录组成一个新的DataFrame对象。
最后,我们可以使用print方法打印出结果:
print(result)
下面是一个完整的示例,假设我们有以下的CSV数据:
id,category,value
1,A,0.5
2,A,0.4
3,A,0.9
4,A,0.7
5,A,0.1
6,A,0.2
7,A,0.8
8,B,0.3
9,B,0.2
10,B,0.1
11,B,0.5
12,B,0.4
13,B,0.6
14,B,0.7
我们可以按照“category”列进行分组,并获取每个组的前3条记录,代码如下:
import pandas as pd
df = pd.read_csv("data.csv")
grouped = df.groupby("category")
n = 3
result = grouped.apply(lambda x: x.head(n))
print(result)
运行结果如下:
id category value
category
A 1 A 0.5
2 A 0.4
3 A 0.9
4 A 0.7
5 A 0.1
6 A 0.2
B 8 B 0.3
9 B 0.2
10 B 0.1
11 B 0.5
12 B 0.4
13 B 0.6
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Pandas DataFrame的每组中获取最上面的N条记录 - Python技术站