Python Pandas を使用して、最大値のCountry
&を見つけようとしています。Place
これは最大値を返します。
data.groupby(['Country','Place'])['Value'].max()
しかし、対応する名前Country
を取得するにはどうすればよいですか?Place
国と場所はシリーズのインデックスです。インデックスが必要ない場合は、次のように設定できますas_index=False
。
df.groupby(['country','place'], as_index=False)['value'].max()
編集:
すべての国で最大値の場所が必要なようです。次のコードは、必要なことを行います。
df.groupby("country").apply(lambda df:df.irow(df.value.argmax()))
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[df['Value']==df['Value'].max()])
nlargest
パフォーマンスを向上させ、コードを短くするために使用することをお勧めします。輸入pandas
df[col_name].value_counts().nlargest(n=1)