Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x 如何根据条件替换数据帧/系列中的行值?_Python 3.x_Pandas - Fatal编程技术网

Python 3.x 如何根据条件替换数据帧/系列中的行值?

Python 3.x 如何根据条件替换数据帧/系列中的行值?,python-3.x,pandas,Python 3.x,Pandas,我正在为泰坦尼克号沉船数据集准备一个模型。我正试图将男性和女性成员的失踪年龄分别填为31岁和28岁 我试着用这个代码来填充男性乘客的失踪年龄 if data[data.Sex=='male'].Age.isna(): data['Age'] = 31 并得到以下错误: ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all

我正在为泰坦尼克号沉船数据集准备一个模型。我正试图将男性和女性成员的失踪年龄分别填为31岁和28岁

我试着用这个代码来填充男性乘客的失踪年龄

if data[data.Sex=='male'].Age.isna():
     
    data['Age'] = 31 
并得到以下错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
有多个错误:

  • data[data.Sex='male'].Age.isna()
    返回一系列布尔值,如:(True,False,False,True)您希望if语句做什么?如果意思是说,如果下面是真的,就做点什么。这里不是真的或假的,而是一系列的
  • 它无法处理这一点,这就是为什么会出现错误:ValueError:序列的真值是不明确的。使用a.empty、a.bool()、a.item()、a.any()或a.all()

  • 即使它可以工作,这两条线也将彼此独立处理。因为
    data[data.Sex='male'].Age.isna()
    data['Age']=31
    即使
    if
    语句为
    True
    数据['Age']=31
    也会将所有年龄设置为31,而不仅仅是缺少的年龄。我不认为那是你想做的
  • 解决方案:

    要实现您最想做的事情,您可以使用:

    data.loc[( (data.Sex=='male') & (data.Age.isna()) )] = 31
    
    为了使if语句返回True而不是错误,请使用:


    any(data[data.Sex='male'].Age.isna())
    all(data[data.Sex='male'].Age.isna())
    取决于您想要实现的目标。

    欢迎来到这里,您可能需要先学习Python/Pandas教程。因为这并不是熊猫的工作原理。
    data.loc[( (data.Sex=='male') & (data.Age.isna()) )] = 31