Python Pandas Dataframe按组中的最大值选择行

我有一个通过df.pivot创建的数据框:

type                             start  end

F_Type to_date

A 20150908143000 345 316

B 20150908140300 NaN 480

20150908140600 NaN 120

20150908143000 10743 8803

C 20150908140100 NaN 1715

20150908140200 NaN 1062

20150908141000 NaN 145

20150908141500 418 NaN

20150908141800 NaN 450

20150908142900 1973 1499

20150908143000 19522 16659

D 20150908143000 433 65

E 20150908143000 7290 7375

F 20150908143000 0 0

G 20150908143000 1796 340

我想为每个“ F_TYPE”过滤并返回一行,仅返回最大“ to_date”的行。我想返回以下数据框:

type                             start  end

F_Type to_date

A 20150908143000 345 316

B 20150908143000 10743 8803

C 20150908143000 19522 16659

D 20150908143000 433 65

E 20150908143000 7290 7375

F 20150908143000 0 0

G 20150908143000 1796 340

谢谢..

回答:

使用标准方法groupby(keys)[column].idxmax()。但是,要使用所需的行,idxmax您需要idxmax返回唯一的索引值。获得唯一索引的一种方法是调用reset_index

从中获取索引值后,groupby(keys)[column].idxmax()您可以使用来选择整行df.loc

In [20]: df.loc[df.reset_index().groupby(['F_Type'])['to_date'].idxmax()]

Out[20]:

start end

F_Type to_date

A 20150908143000 345 316

B 20150908143000 10743 8803

C 20150908143000 19522 16659

D 20150908143000 433 65

E 20150908143000 7290 7375

F 20150908143000 0 0

G 20150908143000 1796 340

注意:idxmax返回索引 标签 ,不一定是普通 标签

。使用后reset_index的指数标签碰巧也是序,但由于idxmax正在恢复标签(不是序号),最好是 始终

使用idxmax与配合df.loc,而不是df.iloc(因为我原来在这个岗位做。)

以上是 Python Pandas Dataframe按组中的最大值选择行 的全部内容, 来源链接: utcz.com/qa/427941.html

回到顶部