将两个对应的列合并

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>----"塞入一个列中。

作为预处理,我想在电子邮件地址上加上<>并相应地将其合并成一个单元格。使用Pandas是否技术上可行呢?

以我的示例为例:

抄送人(名称)列由对象组成,例如

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

同时,CC(电子邮件)列与之对应,其内容完全相同。
/0-org-name/ou=administrative group/cn=recipient/cn=unique num;aaa@we;/o-same-org------

Outlook导出功能给了我这种奇怪的地址,因为他们使用了org账户或者其他什么东西。

在尝试分割字符串时,“/”是否重要?

2个回答

3

使用列表推导式和 zipsplitjoin 的一种方式:

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)'])]

1
不错的解决方案 :) - jezrael
非常感谢您的评论![out]正是我想要的! 我尝试将您的代码应用到我的df中,但它显示“'float' object has no attribute 'split'”。 我知道这是什么意思,但我从未使用过“n,e”分割方法,所以我不知道该如何解决它... - user12929266
你能识别出问题行吗?哪些行是类型为“float”的? - Chris Adams
浮点数没有输出错误,可以看到结果。 就像 “名称;名称;名称;<地址><地址><地址>” 所以对我来说循环似乎只影响了一次。 - user12929266
你能把那行代码作为上面问题的示例发出来吗? - Chris Adams
显示剩余3条评论

0

轻而易举!假设您的数据在一个名为 df 的数据帧中:

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

这应该会给你所需的列。


谢谢您的评论,但它给了我以下这种行:name; name; name; <adress; adress; adress>而我想要的行是这样的:name<adress>; name<adress>; name<adress>... - user12929266
哦,所以它给了你一行包含所有数据的结果?在这种情况下,请参考Chris A的答案-https://dev59.com/l7noa4cB1Zd3GeqPQnT_#60390921 - Cerberton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接