【发布时间】:2019-03-01 02:35:34
【问题描述】:
我有一个如下的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)
【问题讨论】:
-
df.columns[idx] -
如果你真的想清楚,你应该提供一个minimal reproducible example
-
df.idxmin(axis=1)将为您提供所有列名 -
顺便说一句
(X.idxmin(1) == X.columns[X.values.argmin(1)]).all()评估为True -
很明显,您甚至从未尝试过我提供的代码。如果你有,你会注意到它给出了每行中最小值的列名......正是你所要求的。现在我没有从这次互动中失去或获得任何东西,但我担心你会因为不理解对你非常有用的东西而离开。