![](/img/trans.png)
[英]How to create a new column in a Pandas DataFrame based on a column in another DataFrame?
[英]How to create a pandas Series (column), based in a match with a value in another Dataframe?
我的问题如下:我不太了解所有 pandas 方法,我认为肯定有更有效的方法:我必须将两个表从 .csv 文件加载到 postgres 数据库; 这些表通过一个 id 相互关联,该 id 作为外键并来自源数据,但是我必须将它们与我的逻辑控制的不同 id 相关联。
我在下图中以图形方式解释:
我正在尝试根据我拥有的“another_id”创建一个新系列,并应用一个循环遍历 dataframe 系列的 function 来比较是否有另一个代码并获取它们的 id
def check_foreign_key(id, df_ppal):
if id:
for i in df_ppal.index:
if id == df_ppal.iloc[i]['another_id']:
return df_ppal.iloc[i]['id']
dfs['id_fk'] = dfs['another_id'].apply(lambda id : check_foreign_key(id, df_ppal))
在这一点上,我认为它效率不高,因为我必须在所有列中循环以匹配 another_id 并获取并获取我需要的正确 ID 在图片中为黄色。
所以我应该考虑搜索算法以使任务更有效率,但我想知道 pandas 是否没有一种方法可以让我更快地执行此操作,以防有很多记录。
我需要一个像这张表一样的 dataframe,它有一个基于匹配 Another_code 的新列“ID Principal”,以及另一个 dataframe 列。
ID | 身份证校长 | 另一个代码 |
---|---|---|
1个 | 12 | 54 |
2个 | 12 | 54 |
3个 | 13 | 55 |
4个 | 14 | 56 |
5个 | 14 | 56 |
6个 | 14 | 56 |
确实,我不是很了解 pandas 的所有功能,我可以使用合并解决我的问题,我不知道 pandas 在 SQL 中很好地实现了典型的 Join。
该文档对我帮助很大:
最后是我的回答:
new_df = principal.merge(secondary, on='another_id')
我谢谢大家!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.