【发布时间】: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