簡體   English   中英

如何在數據框中找到具有最小值的列的第一行

[英]How to find the first row with min value of a column in dataframe

我有一個數據框,我試圖通過減去兩列的 abs 差異來獲得第三列的最小值,我試圖在其中獲得 col[3] 數據框的第一個或第二個最小值我收到一個錯誤。 有沒有更好的方法來從列 [3] 中獲取最小值的行。

df2 = df[[2,3]]
df2[4] = np.absolute(df[2] - df[3])
#lowest = df.iloc[df[6].min()]
    2   3   4
0   -111    -104    7
1   -130    110     240
2   -105    -112    7
3   -118    -100    18
4   -147    123     270
5   225     -278    503
6   102     -122    224

                2   3   4

期望的結果 = 2 -105 -112 7

獲取與Series差異,添加Series.abs然后通過boolean indexing最小值進行比較:

s = (df[2] - df[3]).abs()
df = df[s == s.min()]

如果想要新的差異列:

df['diff'] = (df[2] - df[3]).abs()
df = df[df['diff'] == df['diff'].min()]

另一個想法是通過Series.idxmin通過最小值獲取索引,然后通過DataFrame.loc選擇,對於一行 DataFrame 是必要的[[]]

s = (df[2] - df[3]).abs()
df = df.loc[[s.idxmin()]]

編輯:

如果可能的話,對於轉換為整數的更多動態代碼,請使用:

def int_if_possible(x):
    try:
        return x.astype(int)
    except Exception:
        return x

df = df.apply(int_if_possible)

暫無
暫無

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

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