[英]Conditional writing to xlsx
伙计们,
我目前正在处理一个巨大的excel表,python 3.7.1和pandas 0.23.4。 我的任务是根据条件匹配写入单元格。 像这样的东西:
val = lincoln@gmx.net
if val in Cell_3A:
write something to Cell_3B
为了做一个完整的例子,让我们说以下是我的数据帧:
Email Protection
1 lincoln@gmail.net
2 obama@gmail.net
3 trump@gmail.net
4 franklin@gmail.net
我知道想写下所有的电子邮件都受到保护,除了第3行的电子邮件。所以完成的数据框应如下所示:
Email Protection
1 lincoln@gmail.net on
2 obama@gmail.net on
3 trump@gmail.net off
4 franklin@gmail.net on
我该如何实现这一目标?
过滤Protection
列,其中电子邮件不是'trump@gmail.net'
并将其分配为'on',反之亦然。
df.loc[df['Email']!='trump@gmail.net', 'Protection']='on'
df.loc[df['Email']=='trump@gmail.net', 'Protection']='off'
使用np.where
:
df['Protection'] = np.where((df['Email']!='trump@gmail.net'),'on','off')
要么:
df['Protection'] = np.where((df['Email']=='trump@gmail.net'),'off','on')
基于if和else条件的另一个解决方案:
数据帧:
>>> df
Email Protection
0 lincoln@gmail.net
1 obama@gmail.net
2 trump@gmail.net
3 franklin@gmail.net
结果:
>>> df['Protection'] = ['On' if x !="trump@gmail.net" else 'Off' for x in df['Email']]
# df['Protection'] = ['Off' if x =="trump@gmail.net" else 'On' for x in df['Email']]
>>> df
Email Protection
0 lincoln@gmail.net On
1 obama@gmail.net On
2 trump@gmail.net Off
3 franklin@gmail.net On
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.