在 Pandas 中寻找 if else 语句的解决方案。例子:
col1 col2
1 NAN
2 NAN
3 NAN
NaN 01-2019
2 NAN
我的新专栏需要是 col3;
我现在只有;当 col1 大于 1 时,设置文本 a,否则设置文本 b。
df['col3'] = np.where(df['col1']>=1, 'text a', 'text b')
但是缺少检查 col1 是否为空并且 col2 是否有值的部分。将该值放入 col3。
我怎样才能做到这一点?
谢谢!
- 编辑 -
当 col1 = 0 且 col2 具有值时,还询问了答案,以将 col3 设置为 col2 的值。
所以也是:
col1 col2
0 01-2019
最佳答案
将 numpy.select
与 Series.isna
和 Series.notna
的测试缺失值和未缺失值一起使用:
print (df)
col1 col2
0 0.0 NaN <-added row for test all coditions failed
1 1.0 NaN
2 2.0 NaN
3 3.0 NaN
4 NaN 01-2019
5 2.0 NaN
m1 = df['col1'] > =1
m2 = df['col1'].isna() & (df['col2'].notna())
#oldier pandas versions
#m2 = df['col1'].isnull() & (df['col2'].notnull())
df['col3'] = np.select([m1, m2], ['text a', df['col2']], 'text b')
print (df)
col1 col2 col3
0 0.0 NaN text b
1 1.0 NaN text a
2 2.0 NaN text a
3 3.0 NaN text a
4 NaN 01-2019 01-2019
5 2.0 NaN text a
双
np.where
的另一种解决方案:df['col3'] = np.where(m1, 'text a',
np.where(m2, df['col2'], 'text b'))
编辑:
条件改变:
m2 = (df['col1'] == 0) & (df['col2'].notna())
关于python - Pandas 如果其他为空,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52867600/