Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何基于每个单元格的值并使用数字索引一次更改多列中的值?_Python_Pandas_Conditional Statements_Multiple Columns - Fatal编程技术网

Python 如何基于每个单元格的值并使用数字索引一次更改多列中的值?

Python 如何基于每个单元格的值并使用数字索引一次更改多列中的值?,python,pandas,conditional-statements,multiple-columns,Python,Pandas,Conditional Statements,Multiple Columns,在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

在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
级数的真值是模糊的。在索引[B]处使用a.empty、a.bool()、a.item()、a.any()或a.all().,'


“Series”对象是可变的,因此不能对它们进行散列

您可以使用replace和fillna方法

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