gpt4 book ai didi

python - 有条件地替换 NaN

转载 作者:行者123 更新时间:2023-12-01 11:17:02 25 4
gpt4 key购买 nike

这里是 Python 的新手。我希望我的问题不是完全多余的 - 如果是,请告诉我并将其归因于我对 StackOverflow 的经验不足。

无论如何,我正在使用来自 kaggle.com 的泰坦尼克号数据集,并且我希望使用一组条件语句来替换数据框的整个年龄列中的 NaN“值”。最终,我想根据以下条件生成结果:1) if age==NaN, and Title==(X or Y or Z),产生一个0-18范围内的随机数2) if age==NaN, and Title==(A or B or C),生成一个19-80范围内的随机数

注意:'Title'是一列,其中列出了个人的头衔(即先生、夫人、领主等)

我发现了类似的情况here ,但我无法根据我的情况调整它,因为它根本没有接近条件性。

这是我最近的尝试(根据本次更新的回复)

尝试 1

import random

mask_young = (df.Age.isnull()) & (df.Title.isin(Title_Young))
df.loc[mask_young, 'Age'] = df.loc[mask_young, 'Age'].apply(lambda x: np.random.randint(0,18))

mask_old = (df.Age.isnull()) & (df.Title.isin(Title_Old))
df.loc[mask_old, 'Age'] = df.loc[mask_old, 'Age'].apply(lambda x: np.random.randint(18,65))

mask_all = (df.Age.isnull()) & (df.Title.isin(Title_All))
df.loc[mask_all, 'Age'] = df.loc[mask_all, 'Age'].apply(lambda x: np.random.randint(0,65))

结果没有错误,但没有对“年龄”列中的 NaN 值进行更正

最佳答案

您想屏蔽您的 DataFrame,然后仅对符合您条件的 DataFrame 部分执行操作。

import numpy as np
import pandas as pd

mask1 = (df.Age.isnull()) & (df.Title == 'Master')
df.loc[mask1, 'Age'] = df.loc[mask1, 'Age'].apply(lambda x: np.random.randint(0,18))

如果您确实需要在一个列表中包含多个标题的功能,这可以通过定义您关心的标题列表然后使用 isin 来实现。例如:

list1 = ['Master', 'Sir', 'Mr']
mask1 = (df.Age.isnull()) & (df.Title.isin(list1))

关于python - 有条件地替换 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49376077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com