Python Pandas Dataframe按组中的最大值选择行
我有一个通过df.pivot创建的数据框:
type start endF_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 endF_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