166

データの構造;

Python Pandas を使用して、最大値のCountry&を見つけようとしています。Place

これは最大値を返します。

data.groupby(['Country','Place'])['Value'].max()

しかし、対応する名前Countryを取得するにはどうすればよいですか?Place

4

12 に答える 12

13

国と場所はシリーズのインデックスです。インデックスが必要ない場合は、次のように設定できますas_index=False

df.groupby(['country','place'], as_index=False)['value'].max()

編集:

すべての国で最大値の場所が必要なようです。次のコードは、必要なことを行います。

df.groupby("country").apply(lambda df:df.irow(df.value.argmax()))
于 2013-04-01T10:50:04.710 に答える
9

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
于 2013-04-01T10:44:57.140 に答える
6

以下を使用できます。

print(df[df['Value']==df['Value'].max()])
于 2020-02-16T15:01:41.747 に答える
2

nlargestパフォーマンスを向上させ、コードを短くするために使用することをお勧めします。輸入pandas

df[col_name].value_counts().nlargest(n=1)
于 2019-05-26T05:47:22.610 に答える