Yanıtlar:
df
Benzersiz bir dizine sahip olduğu varsayılırsa , bu, satıra maksimum değeri verir:
In [34]: df.loc[df['Value'].idxmax()]
Out[34]:
Country US
Place Kansas
Value 894
Name: 7
idxmax
Dizin etiketleri döndürdüğünü unutmayın . Dolayısıyla, DataFrame'in dizinde kopyaları varsa, etiket satırı benzersiz bir şekilde tanımlayamayabilir, bu nedenle df.loc
birden fazla satır döndürebilir.
Bu nedenle, df
benzersiz bir dizine sahip değilseniz, yukarıdaki gibi devam etmeden önce dizini benzersiz yapmalısınız. DataFrame'e bağlı olarak, bazen dizini benzersiz yapmak için stack
veya kullanabilirsiniz set_index
. Veya dizini basitçe sıfırlayabilirsiniz (böylece satırlar 0'dan başlayarak yeniden numaralandırılır):
df = df.reset_index()
Ülke ve yer dizinin dizinidir, dizine ihtiyacınız yoksa şunları ayarlayabilirsiniz as_index=False
:
df.groupby(['country','place'], as_index=False)['value'].max()
Düzenle:
Görünüşe göre her ülke için maksimum değere sahip bir yer istiyorsunuz, aşağıdaki kod istediğinizi yapacak:
df.groupby("country").apply(lambda df:df.irow(df.value.argmax()))
Bence maksimum değeri olan bir satırı döndürmenin en kolay yolu indeksini almaktır. argmax()
en büyük değere sahip satırın dizinini döndürmek için kullanılabilir.
index = df.Value.argmax()
Artık dizin, söz konusu satırın özelliklerini almak için kullanılabilir:
df.iloc[df.Value.argmax(), 0:2]
index
Özelliğini kullanın DataFrame
. Örnekteki tüm satırları yazmadığımı unutmayın.
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')
Değeri bu dizine göre de alabilirsiniz:
In [21]: for index in df.index:
print index, df[index]
....:
('Spain', 'Manchester') 512
('UK', 'London') 778
('US', 'Mchigan') 854
('US', 'NewYork') 562
Ne istediğini yanlış anladığım için özür dilerim, aşağıdakileri deneyin:
In [52]: s=data.max()
In [53]: print '%s, %s, %s' % (s['Country'], s['Place'], s['Value'])
US, NewYork, 854
Ülke ve Yeri maksimum değerle yazdırmak için aşağıdaki kod satırını kullanın.
print(df[['Country', 'Place']][df.Value == df.Value.max()])
Sütunlarda maksimum değerleri bulmak için çözümüm:
df.ix[df.idxmax()]
, ayrıca minimum:
df.ix[df.idxmin()]
Kullanabilirsiniz:
(Df [df [ 'Değerini'] == df [ 'Değer']. Max ()]) yazdırmak
Pandaları kullanarak verileri içe aktarmaya çalışırken benzer bir hatayla karşılaştım, Veri kümemdeki ilk sütunda kelimelerin başlangıcından önce boşluklar vardı. Boşlukları kaldırdım ve bir cazibe gibi çalıştı!