簡體   English   中英

在數據框的給定列中找到最大值的行索引

[英]Find row-index of highest value in given column of dataframe

我想通過增加列number值來排序DataFrame,並獲取該最大值的索引。 (此處是第二行,因此結果應為'BCD':

    number L-word ID
ABC 1      Lord   ABC works
BCD 25     Land   BCD works
CDE 3      Loft   CDE works

(是否有一種解決方案不像我的以下hack那樣遙不可及?我通過添加具有相同名稱的另一列來解決此問題,只是為了使我理解這通常是如何工作的),這是我的代碼想出了:

numbers_ordered = df.sort_values(['number'], ascending = False, na_position='last')
    df = numbers_ordered[:1]
    a = dict(df.head())
    b = a['ID']
    b = str(b)
    c = b[:2]

這似乎令人難以置信,應該有一個簡單的選擇來執行此操作,但是我在熊貓和www的文檔中找不到它。 我的想法是更改索引(類似df = df.reset_index()),然后將舊索引轉換為新列,但這仍然不是最終解決方案,因為我認為應該有一個選擇只是“提取” “我的df熱門歌曲的索引?

嘗試df ['number']。argmax()

import pandas
import numpy as np
df = pandas.DataFrame(np.random.randn(10,3),columns=['Col1','Col2','Col3'])
print df
print df['Col1'].argmax()

輸出

                Col1      Col2      Col3
0  0.583251 -0.014694  1.516529
1  0.274758  0.438513  0.994992
2  0.601611  1.753035  0.864451
3 -0.971775 -1.461290  0.121570
4  2.239460 -1.099298 -1.953045
5  2.314444  0.215336  0.470668
6 -0.138696  0.422923 -0.624436
7  0.602329 -0.015627  0.023715
8  0.594784  0.739058  1.094646
9 -0.104579  0.557339  1.977929

5

在Pandas中有很多查詢索引的方法,但尚不清楚您需要什么。

這里有幾個:

In [48]: df['number'].argmax()
Out[48]: 'BCD'

In [49]: df.index
Out[49]: Index(['ABC', 'BCD', 'CDE'], dtype='object')

In [50]: df.index == 'BCD'
Out[50]: array([False,  True, False], dtype=bool)

In [51]: df.query("index in ['BCD','ABC']")
Out[51]:
     number L-word         ID
ABC       1   Lord  ABC works
BCD      25   Land  BCD works

In [52]: df.loc[['ABC','CDE','CDE']]
Out[52]:
     number L-word         ID
ABC       1   Lord  ABC works
CDE       3   Loft  CDE works
CDE       3   Loft  CDE works

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM