Python 3.x 如何使用python迭代选定coulmn的数据帧?

Python 3.x 如何使用python迭代选定coulmn的数据帧?,python-3.x,dataframe,machine-learning,kaggle,Python 3.x,Dataframe,Machine Learning,Kaggle,假设我有这样一个示例代码 _d=pd.DataFrame([[1,2,3],[4,np.nan,6],[np.nan,np.nan,8]],columns=['x','y','z']) 现在,我有一个函数,它检查值并根据场景分配所需的值 def handling_nan(_d): if _d['x']==1.0: return 100 else: return _d 当我使用这个时,在我下面的代码中 _result=_d.apply(lambd

假设我有这样一个示例代码

_d=pd.DataFrame([[1,2,3],[4,np.nan,6],[np.nan,np.nan,8]],columns=['x','y','z'])
现在,我有一个函数,它检查值并根据场景分配所需的值

def handling_nan(_d):
    if _d['x']==1.0:
        return 100
    else:
        return _d
当我使用这个时,在我下面的代码中

_result=_d.apply(lambda x:handling_nan(x))
_result
我犯了一个错误

KeyError:('x','发生在索引x')

更新A:

简言之,我使用的是kaggle.com上的数据集,即《泰坦尼克号:从灾难中学习机器》,在该数据集中,我想介绍一个新的专栏,内容如下

如果男性且年龄为NaN,则插入男性的平均年龄,而不是NaN,如果 女性,年龄为NaN,然后插入女性总年龄的平均值()而不是NaN


函数中遇到了
KeyError
,因为数据帧上的
apply()
方法假定
axis=0
。这意味着该函数将应用于每一列,而不是每一行。要删除此错误,需要将
apply()
调用替换为:

_result=_d.apply(lambda x:handling_nan(x), axis=1)

查看编辑,问题是用数据集中的分组平均值替换
NaNs

这可以使用
fillna()
transform()
方法完成,如下所示:


l=[[“M”,30],“M”,45],“M”,无],“F”,76],“F”,23],“F”,无]]
df=pd.DataFrame(l,列=[“性别”,“年龄”])
df['age']=df['age'].fillna(df.groupby(“sex”)['age'].transform('mean'))
答案还有其他的解决方案

希望这有帮助