Câu trả lời:
Giả sử df
có một chỉ mục duy nhất, điều này sẽ cho hàng có giá trị lớn nhất:
In [34]: df.loc[df['Value'].idxmax()]
Out[34]:
Country US
Place Kansas
Value 894
Name: 7
Lưu ý rằng idxmax
trả về các nhãn chỉ mục . Vì vậy, nếu DataFrame có các bản sao trong chỉ mục, nhãn có thể không xác định duy nhất hàng, vì vậydf.loc
có thể trả về nhiều hơn một hàng.
Do đó, nếu df
không có chỉ mục duy nhất, bạn phải tạo chỉ mục duy nhất trước khi thực hiện như trên. Tùy thuộc vào DataFrame, đôi khi bạn có thể sử dụng stack
hoặc set_index
tạo chỉ mục duy nhất. Hoặc, bạn có thể chỉ cần đặt lại chỉ mục (để các hàng được đánh số lại, bắt đầu từ 0):
df = df.reset_index()
df[df['Value']==df['Value'].max()]
Điều này sẽ trả về toàn bộ hàng có giá trị tối đa
Quốc gia và địa điểm là chỉ mục của chuỗi, nếu bạn không cần chỉ mục, bạn có thể đặt as_index=False
:
df.groupby(['country','place'], as_index=False)['value'].max()
Biên tập:
Có vẻ như bạn muốn địa điểm có giá trị tối đa cho mọi quốc gia, mã sau sẽ thực hiện những gì bạn muốn:
df.groupby("country").apply(lambda df:df.irow(df.value.argmax()))
Tôi nghĩ cách dễ nhất để trả về một hàng có giá trị lớn nhất là lấy chỉ mục của nó. argmax()
có thể được sử dụng để trả về chỉ mục của hàng có giá trị lớn nhất.
index = df.Value.argmax()
Bây giờ chỉ mục có thể được sử dụng để lấy các tính năng cho hàng cụ thể đó:
df.iloc[df.Value.argmax(), 0:2]
Sử dụng index
thuộc tính của DataFrame
. Lưu ý rằng tôi không nhập tất cả các hàng trong ví dụ.
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')
Bạn cũng có thể nhận giá trị bằng chỉ mục đó:
In [21]: for index in df.index:
print index, df[index]
....:
('Spain', 'Manchester') 512
('UK', 'London') 778
('US', 'Mchigan') 854
('US', 'NewYork') 562
Xin lỗi vì đã hiểu sai những gì bạn muốn, hãy thử những cách sau:
In [52]: s=data.max()
In [53]: print '%s, %s, %s' % (s['Country'], s['Place'], s['Value'])
US, NewYork, 854
Để in Quốc gia và Địa điểm với giá trị lớn nhất, hãy sử dụng dòng mã sau.
print(df[['Country', 'Place']][df.Value == df.Value.max()])
Giải pháp của tôi để tìm giá trị lớn nhất trong các cột:
df.ix[df.idxmax()]
, cũng tối thiểu:
df.ix[df.idxmin()]
Bạn có thể dùng:
print (df [df ['Giá trị'] == df ['Giá trị']. max ()])
Tôi đã gặp lỗi tương tự khi cố gắng nhập dữ liệu bằng gấu trúc, Cột đầu tiên trên tập dữ liệu của tôi có khoảng trắng trước khi bắt đầu các từ. Tôi đã loại bỏ các khoảng trắng và nó hoạt động như một sự quyến rũ !!