3

我已导入 Outlook 电子邮件 CSV 数据并删除了不必要的列。

    CC(Name)                           CC(Email)
  A; B; C; D; E         abc@aa; def@dd; asd@aa; wer@dd; qwer@qq
  B; F; E; R; W         def@dd; wer@aa; qwer@qq; wer@ee; wee@rr

现在我有了这两列,我最初想将它们像"A<abc@aa>; B<def@aa>----"一列一样提取在一起。

作为预处理,我想将 <> 放在电子邮件中并相应地使其成为一个。实际上使用熊猫在技术上是否可行..?

在我的例子中,

CC(Name) 列由对象组成,例如

Mr.Chicken;Water;Ms.Cat;Forest;Dog

相应地,CC(Email) 列具有完全相同的

/0-org-name/ou=administrative group/cn=recipient/cn=unique num;aaa@we;/o-same-org------

Outlook 导出方法给了我一个奇怪的地址,因为他们使用 org 帐户或其他东西..

尝试分隔 str 时“/”是否重要?

4

2 回答 2

3

将列表推导与zip,split和一起使用的一种方法join

df['output'] = ['; '.join([f'{n1}<{e1}>' for n1, e1 in zip(n.split('; '), e.split('; '))])
                for n, e in zip(df['CC(Name)'], df['CC(Email)'])]
print(df)

[出去]

        CC(Name)                                CC(Email)                                                  output
0  A; B; C; D; E  abc@aa; def@dd; asd@aa; wer@dd; qwer@qq  A<abc@aa>; B<def@dd>; C<asd@aa>; D<wer@dd>; E<qwer@qq>
1  B; F; E; R; W  def@dd; wer@aa; qwer@qq; wer@ee; wee@rr  B<def@dd>; F<wer@aa>; E<qwer@qq>; R<wer@ee>; W<wee@rr>

更新

如果是float类型,您可以尝试使用str()

df['output'] = ['; '.join([f'{n1}<{e1}>' for n1, e1 
                           in zip(str(n).split('; '), str(e).split('; '))])
                for n, e in zip(df['CC(Name)'], df['CC(Email)'])]
于 2020-02-25T09:04:57.977 回答
0

十分简单!假设您的数据在数据框中df

df['cc_full'] = df['CC(Name)'] + "<" + df['CC(Email)'] + ">"

那应该给你你需要的专栏。

于 2020-02-25T09:02:52.323 回答