簡體   English   中英

Pandas在一列中檢索與另一列中的最大值對應的值

[英]Pandas retrieve value in one column(s) corresponding to the maximum value in another

這里有相對較新的Python腳本編寫器,其中包含有關Pandas和DataFrames的快速問題。 在Python中可能有一種更簡單的方法來做我正在做的事情(在Pandas之外),所以我對所有建議持開放態度。

我有一個大型數據集(不是我們所有人),擁有數十個屬性和數萬個條目。 我已成功打開它(.csv文件)並刪除了練習中不必要的列,以及我從其他問題中學到的使用過的pandas技術,以便將表格放在桌子上以便我可以使用

作為一個例子,我現在有數據幀df ,有三列--A,B和C.我需要找到A的最大值索引,然后在該索引處拉取B和C的值。 根據對最佳方法的研究,似乎idxmax是最好的選擇。

MaxIDX = df['A'].idxmax()

這給了我正確的答案,但是當我嘗試使用at基於此變量獲取值at ,我收到錯誤。 我相信這是因為idxmax產生一個系列,而不是整數輸出。

variable = df.at[MaxIDX, 'B']

所以我的問題有兩個部分。

如何系列轉換為正確輸入at 並且,有一種更簡單的方法可以做到這一點,我完全失蹤了嗎? 我想要做的就是得到A列最大值的索引,然后在該索引處拉出B列和C列的值。

任何幫助表示贊賞。 謝謝你! 干杯!

注意:使用:Python 3.6.4和Pandas 0.22.0

np.random.seed(0)
df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))

df

          A         B         C
0  1.764052  0.400157  0.978738
1  2.240893  1.867558 -0.977278
2  0.950088 -0.151357 -0.103219
3  0.410599  0.144044  1.454274
4  0.761038  0.121675  0.443863


df.A.idxmax()
1

你聲稱失敗了,似乎對我有用:

df.at[df.A.idxmax(), 'B']
1.8675579901499675

雖然,根據你的解釋,你可以改為想要loc ,不會at

df.loc[df.A.idxmax(), ['B', 'C']]

B    1.867558
C   -0.977278
Name: 1, dtype: float64

注意: 您可能需要檢查索引是否包含重復條目。 這是失敗的一個可能原因。

暫無
暫無

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

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