[英]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.idxmin
( docs ):
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.