本文主要是介绍pandas 按某一列A排序,按B和C两列分组,选择分组后A列值最大的行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、需求
按 updateTime 列倒序排序,按 B 和 C 两列分组,分组后选择最后更新的时间的那一行,并将结果加上新索引。
二、代码
import pandas as pd
data = pd.read_csv('test.csv')
df = pd.DataFrame(data)
df = df.sort_values('updateTime', ascending=False).groupby(['B','C']).first().reset_index()
first() 函数代表选择第一行,如果要选取多行,可以使用 head() 函数: head(5)表示选择前五行。
如下例:
import pandas as pddata = pd.read_csv('test.csv',header = 0)
df = pd.DataFrame(data)# 按日期分组,分组后对 value 列从大到小排序,取每组前十行
df = df.groupby('date', group_keys=False).apply(lambda x: x.sort_values('value', ascending=False)).groupby('date').head(10).reset_index()
在不能直接使用sort_values() 函数时,使用 apply() 函数。关于这一点,在本人另一篇博客中有详细解释,参见:
https://blog.csdn.net/u011675334/article/details/105328857
这篇关于pandas 按某一列A排序,按B和C两列分组,选择分组后A列值最大的行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!