如何基于与另一个数据帧中的值的匹配创建Pandas系列(列)?

2024-07-03 07:24:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我的问题是:我不太了解所有的pandas方法,我认为肯定有一种更有效的方法可以做到这一点:我必须将两个表从.csv文件加载到postgres数据库;这些表通过一个id相互关联,该id用作外键,并且来自源数据,但是我必须将它们关联到由我的逻辑控制的不同id

我在下图中以图形方式解释:

enter image description here

我正在尝试根据我拥有的“另一个id”创建一个新的序列,并应用一个函数,该函数在一个数据帧序列中循环,以比较是否有另一个代码并获取它们的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))

在这一点上,我认为这是没有效率的,因为我必须在所有列中循环,以匹配另一个_id,并获取和获取正确的id,我需要的id在图片中是黄色的

因此,我应该考虑使用搜索算法来提高任务的效率,但我想知道pandas是否有一种方法可以让我在有很多记录的情况下更快地完成任务

我需要一个类似于此表的数据帧,它有一个新列“ID Principal”,该列基于与另一个数据帧列匹配的另一个_代码

^{tb1}$

Tags: 数据方法key函数代码idpandasdf
1条回答
网友
1楼 · 发布于 2024-07-03 07:24:47

事实上,我并没有很好地理解所有的pandas函数,我可以使用merge解决我的问题,我不知道pandas在SQL中有一个很好的典型Join实现

这些文档对我帮助很大:

  1. https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#database-style-dataframe-or-named-series-joining-merging

  2. Pandas Merging 101

最后,我的回答是:

new_df = principal.merge(secondary, on='another_id')

谢谢大家

相关问题 更多 >