按User列分组,重复用户对应不同邮箱时新增列
解决方案
可以用Pandas快速实现这个需求,步骤如下:
1. 准备数据
先把原始数据转换成Pandas DataFrame:
import pandas as pd data = { 'User': ['Ed', 'Heidi', 'Ed', 'Nick', 'Nick', 'Duncan', 'Lucy', 'Duncan', 'Ed'], 'Email': ['ed@gmail.com', 'heidi@gmail.com', 'ed@hotmail.com', 'nick@gmail.com ', 'nick@gmail.com', 'duncan@hotmail.com', 'lucy@hotmail.com', 'duncan@gmail.com', 'ed@myspace.com'] } df = pd.DataFrame(data)
2. 分组拆分邮箱列
# 按User分组,对Email去重后转为列表,重置索引 grouped = df.groupby('User')['Email'].apply(lambda x: x.unique().tolist()).reset_index() # 将邮箱列表拆分为多列 email_cols = pd.DataFrame(grouped['Email'].tolist(), index=grouped.index) # 重命名列(可按需调整) email_cols.columns = [f'Email_{i+1}' if i > 0 else 'Email' for i in email_cols.columns] # 合并用户列与拆分后的邮箱列 result = pd.concat([grouped[['User']], email_cols], axis=1)
3. 最终输出结果
运行代码后得到的result格式如下:
User Email Email_2 Email_3 0 Duncan duncan@hotmail.com duncan@gmail.com NaN 1 Ed ed@gmail.com ed@hotmail.com ed@myspace.com 2 Heidi heidi@gmail.com NaN NaN 3 Lucy lucy@hotmail.com NaN NaN 4 Nick nick@gmail.com NaN NaN
如果不需要空值标记NaN,可以用result.fillna('')替换为空字符串。
内容的提问来源于stack exchange,提问作者Ed Jefferies
相关产品推荐
相关产品推荐

