首页 > 解决方案 > 使用 python pandas 中的函数将数据附加到现有数据帧

问题描述

我有一个数据框:

id    user_id    name       city            email
 1       1       John       Mexico City     john@example.com
 2       2       Conor      NY              conor@example.com
 3       3       Albert     Florida city    albert@example.com
 4       4       James      Florida city    james@example.com

我还有一个 mysql 表user_data

id    email1              email2                  status
1    john@example.com                            active
2                      conor@example.com         active
3                      albert@example.com        delete
4    james@example.com                           active

我必须status根据 sql 查询将列的数据附加到数据框中

def fetchStatus(con, user_id, email):
    sql = """select status from user_data where id = %s and ( email1 = '%s' or email2 = '%s' )"""%(user_id, email, email)
    status_data = pd.read_sql(sql, con)

status_data包含特定的状态,user_id并且email应该将状态附加到数据框

期望的结果

id    user_id    name       city            email                  status
 1       1       John       Mexico City     john@example.com       active
 2       2       Conor      NY              conor@example.com      active
 3       3       Albert     Florida city    albert@example.com     delete
 4       4       James      Florida city    james@example.com      active

我之前使用的方法:

我已经使用 pandas 将表提取为数据框,并使用连接两个数据框user_id

但是现在我想使用函数方式。我怎样才能做到这一点?

标签: pythonmysqlpandas

解决方案


看起来joinmerge原生的熊猫函数可以解决问题。

我认为您只需要编辑 SQL 查询,以便获得 Id 和状态。

def fetchStatus(con, user_id, email):
    sql = """select id, status from user_data where id = %s and ( email1 = '%s' or email2 = '%s' )"""%(user_id, email, email)
    status_data = pd.read_sql(sql, con)

df_merged = sample_df.set_index('user_id').join(status_data.set_index('id'))


推荐阅读