根据列Pandas中的最大值筛选数据帧

2024-05-15 20:51:49 发布

您现在位置:Python中文网/ 问答频道 /正文

使用pandas,我有一个如下所示的数据框:

Hour            Browser     Metric1   Metric2   Metric3
2013-08-18 00   IE          1000      500       3000
2013-08-19 00   FF          2000      250       6000
2013-08-20 00   Opera       3000      450       9000
2001-03-21 00   Chrome/29   3000      450       9000
2013-08-21 00   Chrome/29   3000      450       9000
2014-01-22 00   Chrome/29   3000      750       9000

我想创建一个最大值为Metric1>;2000的浏览器数组。有没有最好的办法?你基本上可以看到我在用下面的代码做什么。

browsers = df[df.Metric1.max() > 2000]['Browser'].unique()

Tags: 数据gtbrowserpandasdf浏览器数组opera
1条回答
网友
1楼 · 发布于 2024-05-15 20:51:49

您可以按浏览器分组并获取最大值:

In [11]: g = df.groupby('Browser')

In [12]: g['Metric1'].max()
Out[12]:
Browser
Chrome/29    3000
FF           2000
IE           1000
Opera        3000
Name: Metric1, dtype: int64

In [13]: over2000 = g['Metric1'].max() > 2000

In [14]: over2000
Out[14]:
Browser
Chrome/29     True
FF           False
IE           False
Opera         True
Name: Metric1, dtype: bool

要取出数组,请将其用作布尔掩码:

In [15]: over2000[over2000].index.values
Out[15]: array(['Chrome/29', 'Opera'], dtype=object)

相关问题 更多 >