在您的DataFrame 上使用idxmax() 方法怎么样?
import numpy as np
import pandas as pd
from ggplot import meat
我在这里使用ggplot 中的肉类数据集。
In [18]: meat
Out[18]:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 827 entries, 0 to 826
Data columns (total 8 columns):
date 827 non-null values
beef 827 non-null values
veal 827 non-null values
pork 827 non-null values
lamb_and_mutton 827 non-null values
broilers 635 non-null values
other_chicken 143 non-null values
turkey 635 non-null values
dtypes: datetime64[ns](1), float64(7)
假设您要查找beef 产量最高的行。
In [36]: meat.beef.max()
Out[36]: 2512.0
在 SQL 中你可能会这样做
SELECT
*
FROM
meat
WHERE
beef = (SELECT max(beef) FROM meat) ;
使用 pandas,您可以像这样使用 idxmax 完成此操作:
In [35]: meat.ix[meat.beef.idxmax()]
Out[35]:
date 2002-10-01 00:00:00
beef 2512
veal 18.7
pork 1831
lamb_and_mutton 19.7
broilers 2953.3
other_chicken 50.7
turkey 525.9
Name: 705, dtype: object
idxmax 非常棒,如果您的数据是基于日期或时间的,它也应该可以工作。
In [42]: ts = meat.set_index(['date'])
In [43]: ts.beef.max()
Out[43]: 2512.0
In [44]: ts.beef.idxmax()
Out[44]: Timestamp('2002-10-01 00:00:00', tz=None)
In [45]: ts.ix[ts.beef.idxmax()]
Out[45]:
beef 2512.0
veal 18.7
pork 1831.0
lamb_and_mutton 19.7
broilers 2953.3
other_chicken 50.7
turkey 525.9
Name: 2002-10-01 00:00:00, dtype: float64