【问题标题】:How to change values in multiple columns at once based on value of each cell and using number index?如何根据每个单元格的值并使用数字索引一次更改多列中的值?
【发布时间】:2020-02-28 15:41:56
【问题描述】:

在 pandas df 中,从索引 4 到末尾的列中的所有单元格都有空值或两个可能的字符串之一,让我们使用“a”和“b”。我想用一个数字替换每个值:“a”用 1,“b”用 2,null 用 0。我宁愿同时更改多个列,而不是使用循环。

我尝试过将 apply 与 lambda 一起使用,因为它适用于较早的项目,但不适用于这个项目,当我仅在一列上使用它时,它会将所有内容更改为 0。我也尝试过用下面的另一段代码分配值。

df.iloc[:, 4:] = df.iloc[:, 4:].apply(lambda x:1 if x == 'a' else(2 if x == 'b' else 0))

df[df.iloc[:,4]=='a',4] = 1

Series 的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。','发生在索引 [B]

'Series' 对象是可变的,因此它们不能被散列

【问题讨论】:

    标签: python pandas conditional-statements multiple-columns


    【解决方案1】:

    你可以使用replace和fillna方法

    df.iloc[:, 4:] = df.iloc[:, 4:].replace({'a':1,'b':2}).fillna(0)
    

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 2020-11-02
      • 2020-02-26
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      相关资源
      最近更新 更多