python - 如何使用熊猫将多行组合成具有多条件的行
问题描述
我想将行组合成具有条件的单行。条件基于电话和电子邮件。如果电子邮件和电话相同,则实体和帐户将合并为一行。我找不到这个问题的逻辑。任何想法?例如:
当前数据:
entity phone email account_no
E01 22 minhkhang@gmail.com
E02 33 hoangyen@gmail.com
E03 55 tmai@hotmail.com
E04 66 thuthao@gmail.com
E05 77 lamanh@gmail.com M05
E06 88 tuantu@gmail.com M06
E07 100 maidao@gmail.com
11 minhkhang@gmail.com M01
44 hoangyen@gmail.com M02
55 thanhmai@gmail.com M03
66 tthao@hotmail.com M04
99 hoangkien@gmail.com M07
我想要的结果:
entity account_no
M07
E02 M02
E05 M05
E07
E01 M01
E03 M03
E04 M04
E06 M06
解决方案
您可以merge
在phone
列上使用,然后在email
列上使用。合并两个新数据框并删除重复项:
phone = pd.merge(df[['entity', 'phone']].dropna(),
df[['account_no', 'phone']].dropna(),
how='outer', on='phone') \
.drop(columns='phone')
email = pd.merge(df[['entity', 'email']].dropna(),
df[['account_no', 'email']].dropna(),
how='outer', on='email') \
.drop(columns='email')
out = phone.combine_first(email).drop_duplicates('account_no').fillna('')
输出:
>>> out
entity account_no
0 E01 M01
1 E02 M02
2 E03 M03
3 E04 M04
4 E05 M05
5 E06 M06
6 E07
9 M07
推荐阅读
- android - 使用材料设计,如何以编程方式创建材料按钮?
- linux - Linux下的gcc可执行文件在哪里?
- python - (Python) RuntimeWarning: double_scalars """ 中遇到无效值
- c++ - 向量
>v(大小);打印时显示 0 作为值 - c - 重映射函数指针
- android - 当我重建项目时出现错误:不兼容的类型:ModalEvent 无法转换为上下文
- sql - SQL Server 表锁定/阻塞
- amazon-web-services - 如何从 kubernetes 的前端调用 spring api
- php - 使用循环在 Wordpress 中显示 4 个不同的帖子
- uwp - Telerik UI For UWP DataGrid 输入键