如何通过查看另一列在一列中填充 NaN 值
how to fill NaN value in one column by looking at other column
我想通过查看此人的姓名(在另一列中给出)在 Gender
列中填充 NaN
值。到目前为止,我已经提取了 NaNs
的男孩名字,并列出了这些名字:
boys_names = ['Robin Ounc', 'Chris Stew', 'Neil Bhor', ... and so on]
我想用 'M'
填充 df['Gender']
列中的那些 NaN
值(如果它们的名称出现在 boys_list
中)。如果他们的名字不存在,则使用 'F'
。我试过 If-Else
语句但我失败了。求助!
您可以使用:
#boys_names = ['Robin Ounc', 'Chris Stew', 'Neil Bhor', ... and so on]
df.loc[df['Gender'].isnull(), 'Gender'] = df.loc[df['Gender'].isnull(), 'name'].map(
lambda x: 'M' if x in boys_names else 'F'
)
一些注意事项:
- 使用
.loc
选择'Gender'中为NaN的“名称”(使用pd.Series.isnull()
)
pd.Series.map
接受一个函数,其中每个数据都是串联的,并且 return 每个数据都有您的函数所做的一些更改。 (这里只是检查boys_name
中是否有name
)
- 使用
.loc
赋值回'Gender' 中为NaN的"name"
我认为这可能是个好方法:
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Jhon", "Robin Ounc", "Maria", "Alex"],
"Gender": ["M", None, "F", None]
}
)
boys_names = ['Robin Ounc', 'Chris Stew', 'Neil Bhor']
df["Gender"].fillna(df["Name"].isin(boys_names).map({True: "M", False: "F"}))
我刚刚在 isin
之后使用 map
函数作为 if-else
来验证 Name
是否在列表中。
您可以使用 np.select()
执行类似 this 的操作
我想通过查看此人的姓名(在另一列中给出)在 Gender
列中填充 NaN
值。到目前为止,我已经提取了 NaNs
的男孩名字,并列出了这些名字:
boys_names = ['Robin Ounc', 'Chris Stew', 'Neil Bhor', ... and so on]
我想用 'M'
填充 df['Gender']
列中的那些 NaN
值(如果它们的名称出现在 boys_list
中)。如果他们的名字不存在,则使用 'F'
。我试过 If-Else
语句但我失败了。求助!
您可以使用:
#boys_names = ['Robin Ounc', 'Chris Stew', 'Neil Bhor', ... and so on]
df.loc[df['Gender'].isnull(), 'Gender'] = df.loc[df['Gender'].isnull(), 'name'].map(
lambda x: 'M' if x in boys_names else 'F'
)
一些注意事项:
- 使用
.loc
选择'Gender'中为NaN的“名称”(使用pd.Series.isnull()
) pd.Series.map
接受一个函数,其中每个数据都是串联的,并且 return 每个数据都有您的函数所做的一些更改。 (这里只是检查boys_name
中是否有name
)- 使用
.loc
赋值回'Gender' 中为NaN的"name"
我认为这可能是个好方法:
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Jhon", "Robin Ounc", "Maria", "Alex"],
"Gender": ["M", None, "F", None]
}
)
boys_names = ['Robin Ounc', 'Chris Stew', 'Neil Bhor']
df["Gender"].fillna(df["Name"].isin(boys_names).map({True: "M", False: "F"}))
我刚刚在 isin
之后使用 map
函数作为 if-else
来验证 Name
是否在列表中。
您可以使用 np.select()
执行类似 this 的操作