Answers:
假设df
有一个唯一的索引,则该行具有最大值:
In [34]: df.loc[df['Value'].idxmax()]
Out[34]:
Country US
Place Kansas
Value 894
Name: 7
请注意,idxmax
返回索引标签。因此,如果DataFrame在索引中有重复项,则标签可能不会唯一地标识该行,因此df.loc
可能会返回多个行。
因此,如果df
没有唯一索引,则必须按照上述步骤使索引唯一。取决于DataFrame,有时您可以使用stack
或set_index
使索引唯一。或者,您可以简单地重置索引(这样行将被重新编号,从0开始):
df = df.reset_index()
使用的index
属性DataFrame
。请注意,我没有在示例中键入所有行。
In [14]: df = data.groupby(['Country','Place'])['Value'].max()
In [15]: df.index
Out[15]:
MultiIndex
[Spain Manchester, UK London , US Mchigan , NewYork ]
In [16]: df.index[0]
Out[16]: ('Spain', 'Manchester')
In [17]: df.index[1]
Out[17]: ('UK', 'London')
您还可以通过该索引获取值:
In [21]: for index in df.index:
print index, df[index]
....:
('Spain', 'Manchester') 512
('UK', 'London') 778
('US', 'Mchigan') 854
('US', 'NewYork') 562
很抱歉造成您的误解,请尝试以下操作:
In [52]: s=data.max()
In [53]: print '%s, %s, %s' % (s['Country'], s['Place'], s['Value'])
US, NewYork, 854
为了以最大值打印“国家和地区”,请使用以下代码行。
print(df[['Country', 'Place']][df.Value == df.Value.max()])