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 pd data = 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() 函数。关于这一点,在本人另一篇博客中有详细解释,参见: