python - 如何在列中查找值并在 Python 中返回列名
问题描述
我有以下数据透视表,最后一列返回该行的最大值。
totalCount max
hours 0 1 2 3 ... 21 22 23
username
user_1 3 0 0 5 ... 0 0 1 5
user_2 0 0 6 0 ... 2 4 0 6
user_3 5 0 0 3 ... 0 0 1 5
user_4 0 2 3 0 ... 0 8 0 8
user_5 1 4 0 0 ... 5 9 2 9
现在我想添加另一列“小时”,它返回最大值所属的列的名称。
输出如下:
totalCount max hour
hours 0 1 2 3 ... 21 22 23
username
user_1 3 0 0 5 ... 0 0 1 5 3
user_2 0 0 6 0 ... 2 4 0 6 2
user_3 5 0 0 3 ... 0 0 1 5 0
user_4 0 2 3 0 ... 0 8 0 8 22
user_5 1 4 0 0 ... 5 9 2 9 22
关于如何创建此列以找到列名的任何想法?
如果最大值在各个列中重复出现怎么办?我想我会返回具有该值的第一列的名称,但是是否有任何代码可以获取出现此最大值的所有列名?(如果您能回答,这是一个额外的问题,我很感激,但主要问题是前一个问题)。
解决方案
您可以使用.idxmax()
which 返回与.apply
on结合的最大元素的索引axis=1
:
df['where_max'] = df.apply(lambda x: x.idxmax(), axis=1)
最小的例子:
df = pd.DataFrame(data={'x': [1, 3, 4, 7], 'wave': [2, 2, 10, 0], 'y': [0,0,0,15]})
df['where_max'] = df.apply(lambda x : x.idxmax(), axis=1)
x wave y where_max
0 1 2 0 wave
1 3 2 0 x
2 4 10 0 wave
3 7 0 15 y
推荐阅读
- python-2.7 - 在 Python 2 中迭代枚举
- c - 如何将 char ** 数据类型转换为可以在 c 中打印的内容?
- python - 无法在 Powershell 中找到或运行我的脚本
- sql - Snowflake SQL 错误 - 函数“-”的参数类型无效:(TIMESTAMP_NTZ(9), TIMESTAMP_NTZ(9))
- machine-learning - 将 Pytorch 图像分类器转换为 mlmodel 时出现问题:无论 img 如何,都返回相同的 softmax 输出
- excel - VBA 性能
- r - 观星者省略了一些我没有指定的系数
- java - 如何使代码在递归后只运行一次?
- vba - 选择“收件箱”时如何折叠特定的收件箱组并展开所有其他组?
- python - 在 Pandas 数据框中添加聚合/摘要行