python - 仅替换 pandas 中数据框行的第一个最大值?

标签 python pandas dataframe

我在尝试仅替换(用 0 )数据帧中最大值的第一个实例时遇到问题。 例如:

NAME   1ST MONTH    2ND MONTH   3RD MONTH....
Joe        3            3            2
Erik       5            7            7

我需要替换 df 中每行最大值的第一个实例。 我需要的输出是:

NAME   1ST MONTH    2ND MONTH   3RD MONTH....
Joe        0            3            2
Erik       5            0            7

但我正在使用:

df_temp1.apply(lambda x: x.replace(max(x), 0), axis = 1)

这给了我以下 df:

NAME   1ST MONTH    2ND MONTH   3RD MONTH....
Joe        0            0            2
Erik       5            0            0

最佳答案

您可以使用nlargest()replace()

df = pd.DataFrame([[3, 3, 2], [5, 7, 7]], columns=['a', 'b', 'c'])

df = df.apply(lambda x: x.replace(x.nlargest(1), 0), axis=1)

print(df)

    a   b   c
0   0   3   2
1   5   0   7

关于python - 仅替换 pandas 中数据框行的第一个最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59821502/

相关文章:

python - 从 Pandas 数据框中的每个单元格中删除列表

python - 自动创建用于测试的数据库

python - 使用 Pandas 为 Scikit-Learn 准备 CSV 文件数据?

python - 访问 pandas 中其他列引用的值

python - 使用 "genfromtxt"提取列

python-3.x - 无法将 numpy dtypes 转换为其 native python 类型(int64 到 int)

python - 如何根据多种条件在pandas中创建新列并通过分组来计算以前的成本和累计成本?

python - 从 Hive 查询深度复制过滤后的 PySpark 数据框

python - python中多维搜索的最佳算法

Python 在两次使用一个值时避免使用变量?