簡體   English   中英

查找pandas DataFrame的列名,其中行值最小

[英]Finding the column names of a pandas DataFrame where row values are minimum

我有一個DataFrame如下:

X = np.array([[1.0, -20, 200, 50],
              [2.0, 19, 100, 52],
              [3.0, 17, -150, 55],
              [4.0, 20, -120, 60],
              [5.0, 21, 119, 70],
              [6.0, -15, 134, -75],
              [7.0, 9, 178, -80],
              [8.0, 10, -190, 90],
              [9.0, 19, 200, 70],
              [10.0, 20, 210, 65]])

native_id1 = ['08MB005', '08ME005', '08GD006','08GH002']
native_id2 = ['08CD001', '08EF006', '08TH002', '08LO002', '07HP003', '08IK002', '09WF001','09YU001', '05KJ008', '08LK007']
X = pd.DataFrame(X, native_id2, native_id1)

我使用了下面的函數,該函數返回對應於每一行最小值的列或索引的位置。

idx = np.argmin(X.values, axis=1)

返回如下內容:

array([1, 0, 2, 2, 0, 3, 3, 2, 0, 0], dtype=int64)

我一直在尋找的是:

08CD001    08ME005
08EF006    08MB005
08TH002    08GD006
08LO002    08GD006
07HP003    08MB005
08IK002    08GH002
09WF001    08GH002
09YU001    08GD006
05KJ008    08MB005
08LK007    08MB005

*更新*我找到了這個問題的答案,在這里我試圖找到對應於熊貓數據幀每一行最小值的列名。

以下答案有效:

df.idxmin(axis=1)

使用DataFrame.idxmindocs ):

df.idxmin(axis=1)

等效地,您可以在df.apply(np.argmin, axis=1)使用np.argmin 但是您會收到以下警告:

FutureWarning:不建議使用“ argmin”。 請改用“ idxmin”。 argmin的行為將得到糾正,以在將來返回位置最小值。 使用“ series.values.argmin”現在獲取最小值的位置。

所以推薦idxmin

您可以使用它來獲取所需的列:

def func(x):
    return np.argmin(x)

print(df[["Small", "Int", "Bor", "Drama"]].apply(func, axis=1))

暫無
暫無

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

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