即使inplace=Tru,pandas replace也不会替换value

2024-09-27 04:19:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据是这样的。如果'no_of_children'不是nan,我想用'Married'替换婚姻状况'Missing'。你知道吗

>cust_data_df[['marital_status','no_of_children']]
>

    marital_status  no_of_children

0   Married           NaN
1   Married           NaN
2   Missing            1
3   Missing            2
4   Single            NaN
5   Single            NaN
6   Married           NaN
7   Single            NaN
8   Married           NaN
9   Married           NaN
10  Single            NaN

这就是我所尝试的:

cust_data_df.loc[cust_data_df['no_of_children'].notna()==True, 'marital_status'].replace({'Missing':'Married'},inplace=True)

但这没什么用。你知道吗


Tags: of数据notruedfdatastatusnan
1条回答
网友
1楼 · 发布于 2024-09-27 04:19:18

为避免chained assignments分配回代值:

m = cust_data_df['no_of_children'].notna()
d = {'Missing':'Married'}
cust_data_df.loc[m, 'marital_status'] = cust_data_df.loc[m, 'marital_status'].replace(d)

如果需要设置所有值:

cust_data_df.loc[m, 'marital_status'] = 'Married'

编辑:

感谢@Quickbeam2k1的解释:

cust_data_df.loc[cust_data_df['no_of_children'].notna()==True, 'marital_status'] is just a new object which has no reference. Replacing there, will leave the original object unchanged

相关问题 更多 >

    热门问题