python - Python - Pandas 组合了两个提供不同值的数据框
问题描述
我有两个不同的数据框,有两列,我想将它们合并 + 得到 B 列的总和。问题是数据框 1 有一些数据,我想保留。我会写一个例子,所以它是有意义的
数据框 1
Columns A Column B
House walls,doors,rooms
Animal Legs,nose,eyes
car tires,engine
数据框 2
Column A Column B
House windows,kitchen
Bike wheels,bicycle chain
期望的结果
Column A Column B
House walls,doors,rooms,windows,kitchen
Animal Legs,nose,eyes
Car tires,engine
Bike wheels,bicycle chain
合并功能没有帮助,我尝试使用 pd.concat 然后以某种方式聚合数据,但也没有帮助。有人知道如何解决它吗?
解决方案
pd.concat([df1, df2]).groupby("Column A")["Column B"].apply(', '.join).reset_index()
连接数据框后,按 A 列对值进行分组,然后用于apply
连接 B 列中的分组字符串,最后用reset_index()
.
编辑:评论扩展
要删除重复项,您可以使用set
数据结构,它只保留您放入其中的每个元素的单个版本。对于每一行 x,拆分单词,然后将单词列表转换为一个集合:
df4 = df3["Column B"].apply(lambda x: set(x.split(", "))).reset_index()
请注意,在此之后,您的 B 列将包含集合。我将让您弄清楚如何使用类似的模式从集合重新转换为字符串。
推荐阅读
- python - 如何在 django rest 服务中从数据库刷新缓存?
- python-3.x - Python3测试文件夹导入问题
- hibernate - Hibernate 使用函数“GETDATE()”为 last_modified_date 保存实体
- javascript - 是否可以在子类 ES 2015 的实例中调用被覆盖的方法?
- c# - ClientBase 的默认值是多少
.ClientCredentials? - vb.net - 具有固定标题和列的 Gridview
- java - 使用 getter setter 初始化 List
- java - 如何从父类获取href?
- python - 如何用交替字符'“'和'”'(python)替换字符串中随机重复的字符'"'?
- python - 如何在类型提示中定义元组或列表的大小