大熊猫为另一列分配不同的值,取决于另一列中的值

时间:2019-07-26 11:16:50

标签: python python-3.x pandas dataframe

我有以下df

days
NaN
70
29

我喜欢做

df['short_days'] = np.where(df.days < 30, 'Yes', 'No')

但是当它是NaNdf.short_days = 'Not Applicable'时,结果将是这样,

days    short_days
NaN     Not Applicable
70      No
29      Yes

2 个答案:

答案 0 :(得分:2)

只要fillna用您想要的任何东西填充nan值

import numpy as np

df['short_days'] = np.where(df.days < 30, 'Yes', 'No')
df['short_days'].fillna('Not Applicable',inplace=True)
days    short_days
NaN     Not Applicable
70      No
29      Yes

答案 1 :(得分:2)

在这里可以使用np.select来定义default值,使用起来更优雅:

df['short_days'] = np.select([df.days<30, df.days>=30], 
                             ['Yes', 'No'], 
                             default='Not Applicable')

输出

   days      short_days
0   NaN  Not Applicable
1  70.0              No
2  29.0             Yes