python - 数据标注,数据框合并
问题描述
我需要用第二个数据框的一列的内容(包含这些名称的一些属性)来注释数据(一列中的名称列表)。像数据框 1 一样:
id name col
----------------------------
29834 Marie Peer
890384 Marie Peach
30047 Susan Peer
与其他数据框包含
name city
---------------------
Marie Chicago
Marie Boston
Harley Milan
Josh London
问题:
- 我应该更好地使用 pandas 还是值得创建 python 字典?
我以前使用过
data = pd.merge(df1, df2, on='column_name', how='left')
,但是如果我的第二个数据帧在列中有多次相同的行(我需要它们进入第一个数据帧的新列的同一行),它是如何工作的。我需要的是,如果“Marie”在第二个数据框中有多个条目,则在新列中注释来自第二个 df 输出的“Marie”的多个条目需要:
29834 Marie Peer Chicago, Boston 890384 Marie Peach Chicago, Boston 30047 Susan Peer
(如果第二个数据框中没有条目,例如此处的“Susan”,则该字段将保持空白)
- 一般来说,这是用来自其他数据集的数据注释数据集的最佳方法吗?
提前非常感谢(抱歉,我是初学者,尽管这听起来可能是非常基本的问题)!
解决方案
用于第二个 DataFrame,因此可能DataFrame.groupby
使用:join
DataFrame.join
df = df1.join(df2.groupby('name')['city'].apply(', '.join), on='name')
print (df)
id name col city
0 29834 Marie Peer Chicago, Boston
1 890384 Marie Peach Chicago, Boston
2 30047 Susan Peer NaN
或者Series.map
:
df1['city'] = df1['name'].map(df2.groupby('name')['city'].apply(', '.join))
print (df1)
id name col city
0 29834 Marie Peer Chicago, Boston
1 890384 Marie Peach Chicago, Boston
2 30047 Susan Peer NaN
详情:
print (df2.groupby('name')['city'].apply(', '.join))
name
Harley Milan
Josh London
Marie Chicago, Boston
Name: city, dtype: object
推荐阅读
- r - 如何检测用英语编写的印地语字符串的文本语言?
- javascript - 如何删除具有相同名称但在不同时间的新 div
- spring-boot - MapStruct 未检测到构建器中的设置器
- linux - 如何使用bash打开多个屏幕并让它们独立运行
- php - 如何对数组基键中的元素求和
- php - Magento 2 原始 SQL 查询将日期更新为 UTC 时区
- go - defer 的可能用例是什么?
- dart - 如何同时使用 ScrollView 和完整尺寸的图像?
- haproxy - 如何从 /SOMETHING/ 路径访问后端资源
- node.js - 在列上运行函数的 Sequelizejs 错误 - check_ungrouped_columns_walker in