【问题标题】:Replace the max value for each column to 0 in Pandas在 Pandas 中将每列的最大值替换为 0
【发布时间】:2021-03-06 00:25:54
【问题描述】:

例如,我有一个这样的数据集:

data = {
    "A": [1, 2, 3],
    "B": [3, 5, 1],
    "C": [9, 0, 1]
}

data_df = pd.DataFrame(data)
data_df
   A  B   C
0  1  3   9
1  2  5   0
2  3  1   1

我想将每列的最大值替换为 0。我想要的输出是:

   A  B   C
0  1  3   0
1  2  0   0
2  0  1   1

提前谢谢你!

【问题讨论】:

  • 对于谁投反对票,你可以给我留言,让我知道我是否可以改进问题的描述.....

标签: python pandas data-manipulation


【解决方案1】:

您可以通过列进行交互,获取最大值并将行替换为最大值:

for col in data_df.columns:
    data_df[col] = data_df[col].apply(lambda x: 0 if x==data_df.max()[col] else x)

【讨论】:

    【解决方案2】:

    如果您的最大值是唯一的,则此方法有效。

    请注意idxmax() 返回最大值的第一个索引。如果这些值更频繁地出现,这将不起作用。

    for col in df.columns:
        df.loc[df.idxmax()[col], col] = 0
    

    【讨论】:

      猜你喜欢
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-03
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多