伙计,
我目前正在使用庞大的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
我该如何实现?
答案 0 :(得分:7)
过滤电子邮件不为Protection
的{{1}}列,并将其分配为“ on”,反之亦然。
'trump@gmail.net'
使用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')
答案 1 :(得分:3)
基于if和else条件的另一个解决方案:
DataFrame:
>>> 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