回答:
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
列の最大値を見つけるための私の解決策:
df.ix[df.idxmax()]
、また最小:
df.ix[df.idxmin()]
パンダを使用してデータをインポートしようとしたときに同様のエラーが発生しました。データセットの最初の列には、単語の先頭の前にスペースがありました。スペースを外してみたところ魅力的でした!!