繁体   English   中英

有条件写入xlsx

[英]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.

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