在Python中,可以使用pandas库来按多列分组并根据列值提取前x行。下面是一个示例代码:
import pandas as pd
# 创建一个示例数据集
data = {'Name': ['John', 'Mike', 'John', 'Anna', 'Mike', 'Anna'],
'Age': [25, 18, 30, 22, 35, 28],
'City': ['New York', 'Chicago', 'New York', 'Chicago', 'Chicago', 'New York']}
df = pd.DataFrame(data)
# 按多列分组,并根据Age列的值提取前2行
top_x_rows = df.groupby(['Name', 'City']).apply(lambda x: x.nlargest(2, 'Age')).reset_index(drop=True)
print(top_x_rows)
输出结果:
Name Age City
0 Anna 28 New York
1 John 30 New York
2 Anna 22 Chicago
3 Mike 35 Chicago
在上面的示例中,我们首先创建了一个包含Name、Age和City列的DataFrame。然后,我们使用groupby函数按Name和City列进行分组。接着,我们使用apply函数结合nlargest函数来提取每个分组中Age列值最大的前2行数据。最后,我们使用reset_index函数重置索引,以便结果数据能够正确显示。
上一篇:按多列分组 pandas
下一篇:按多列分组并汇总唯一列