如何根据另一列的 NaN 值设置 pandas 数据框中的值?

2023-12-05

我有名为df具有原始形状(4361, 15)。一些agefm列的值为 NaN。只是看看:

> df[df.agefm.isnull() == True].agefm.shape
(2282,)

然后我创建新列并将其所有值设置为 0:

df['nevermarr'] = 0

所以我想设置nevermarr值为 1,然后在该行中agefm is Nan:

df[df.agefm.isnull() == True].nevermarr = 1

没有改变:

> df['nevermarr'].sum()
0

我究竟做错了什么?


最好的就是使用numpy.where:

df['nevermarr'] = np.where(df.agefm.isnull(), 1, 0)
print (df)
   agefm  nevermarr
0    NaN          1
1    5.0          0
2    6.0          0

Or use loc, ==True可以省略:

df.loc[df.agefm.isnull(), 'nevermarr'] = 1

Or mask:

df['nevermarr'] = df.nevermarr.mask(df.agefm.isnull(), 1)
print (df)
   agefm  nevermarr
0    NaN          1
1    5.0          2
2    6.0          3

Sample:

import pandas as pd
import numpy as np

df = pd.DataFrame({'nevermarr':[7,2,3],
                   'agefm':[np.nan,5,6]})

print (df)
   agefm  nevermarr
0    NaN          7
1    5.0          2
2    6.0          3

df.loc[df.agefm.isnull(), 'nevermarr'] = 1
print (df)
   agefm  nevermarr
0    NaN          1
1    5.0          2
2    6.0          3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据另一列的 NaN 值设置 pandas 数据框中的值? 的相关文章

随机推荐