Jawaban:
Dengan asumsi df
memiliki indeks unik, ini memberikan baris dengan nilai maksimum:
In [34]: df.loc[df['Value'].idxmax()]
Out[34]:
Country US
Place Kansas
Value 894
Name: 7
Perhatikan bahwa idxmax
mengembalikan label indeks . Jadi jika DataFrame memiliki duplikat dalam indeks, label mungkin tidak secara unik mengidentifikasi baris tersebut, sehingga df.loc
dapat mengembalikan lebih dari satu baris.
Oleh karena itu, jika df
tidak memiliki indeks unik, Anda harus membuat indeks unik sebelum melanjutkan seperti di atas. Bergantung pada DataFrame, terkadang Anda dapat menggunakan stack
atau set_index
membuat indeks menjadi unik. Atau, Anda dapat mengatur ulang indeks (sehingga baris dinomori ulang, mulai dari 0):
df = df.reset_index()
df[df['Value']==df['Value'].max()]
Ini akan mengembalikan seluruh baris dengan nilai maks
Negara dan tempat adalah indeks rangkaian, jika Anda tidak membutuhkan indeks, Anda dapat mengatur as_index=False
:
df.groupby(['country','place'], as_index=False)['value'].max()
Edit:
Tampaknya Anda menginginkan tempat dengan nilai maksimal untuk setiap negara, kode berikut akan melakukan apa yang Anda inginkan:
df.groupby("country").apply(lambda df:df.irow(df.value.argmax()))
Saya pikir cara termudah untuk mengembalikan baris dengan nilai maksimum adalah dengan mendapatkan indeksnya. argmax()
dapat digunakan untuk mengembalikan indeks baris dengan nilai terbesar.
index = df.Value.argmax()
Sekarang indeks dapat digunakan untuk mendapatkan fitur untuk baris tertentu itu:
df.iloc[df.Value.argmax(), 0:2]
Gunakan index
atribut DataFrame
. Perhatikan bahwa saya tidak mengetik semua baris dalam contoh.
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')
Anda juga bisa mendapatkan nilainya dengan indeks itu:
In [21]: for index in df.index:
print index, df[index]
....:
('Spain', 'Manchester') 512
('UK', 'London') 778
('US', 'Mchigan') 854
('US', 'NewYork') 562
Maaf karena salah paham apa yang Anda inginkan, coba berikut ini:
In [52]: s=data.max()
In [53]: print '%s, %s, %s' % (s['Country'], s['Place'], s['Value'])
US, NewYork, 854
Untuk mencetak Negara dan Tempat dengan nilai maksimum, gunakan baris kode berikut.
print(df[['Country', 'Place']][df.Value == df.Value.max()])
Solusi saya untuk menemukan nilai maksimum di kolom:
df.ix[df.idxmax()]
, juga minimum:
df.ix[df.idxmin()]
Kamu bisa memakai:
print (df [df ['Value'] == df ['Value']. max ()])
Saya mengalami kesalahan serupa saat mencoba mengimpor data menggunakan panda, Kolom pertama di kumpulan data saya memiliki spasi sebelum awal kata. Saya menghapus spasi dan itu bekerja seperti pesona !!