繁体   English   中英

如何基于另一列的NaN值设置熊猫数据框中的值?

[英]How set values in pandas dataframe based on NaN values of another column?

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

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

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

df['nevermarr'] = 0

所以我想将nevermarr值设置为1,然后在那一行agefm是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

或使用loc==True可以省略:

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

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

样品:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM