我想获取所有行和所有列中pandas DataFrame中最小值的索引和列名。
我已经尝试过.idxmin,但这似乎仅适用于列。理想情况下,该函数是不需要循环的单行代码。这似乎是一个非常普遍的问题,但是我还没有找到解决方案。
我的数据框:
col0, col1, col2
index0 1 2 3
index1 2 3 4
index2 5 6 7
我想获取整个矩阵中最小值的索引和列:
如此:
some_func(df) = (index0,col0)
答案 0 :(得分:8)
尝试一下:
Executing (default): CREATE TABLE IF NOT EXISTS `user` (`id` INTEGER NOT NULL auto_increment , `name` VARCHAR(255) NOT NULL, `phone` VARCHAR(255) NOT NULL, `gender` VARCHAR(255) NOT NULL DEFAULT 'm', `birthday` VARCHAR(255) NOT NULL, `password` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME
NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
Executing (default): SHOW INDEX FROM `user`
Executing (default): CREATE TABLE IF NOT EXISTS `food` (`id` INTEGER NOT NULL auto_increment , `doInMyPlace` TINYINT(1) NOT NULL, `address` VARCHAR(255) NOT NULL, `mapAddress` VARCHAR(255) NOT NULL, `date` VARCHAR(255) NOT NULL, `time` VARCHAR(255) NOT NULL, `voucher` VARCHAR(255), `companyName` VARCHAR(255) NOT NULL,
`phoneNumber` VARCHAR(255) NOT NULL, `itemCount` NUMBER NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
答案 1 :(得分:2)
divmod
i, j = divmod(np.argmin(np.ravel(df)), df.shape[1])
(df.index[i], df.columns[j])
('index0', 'col0')