![](/img/trans.png)
[英]Keep the value corresponding to the maximum of another column in a dataframe
[英]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.