【问题标题】:append data to exisiting dataframe using a function in python pandas使用 python pandas 中的函数将数据附加到现有数据帧
【发布时间】:2021-07-30 09:02:10
【问题描述】:

我有一个数据框:

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

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

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_idemail 的状态,应将状态附加到数据帧

想要的结果

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 连接两个数据框

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

【问题讨论】:

    标签: python mysql pandas


    【解决方案1】:

    看起来 joinmerge 原生 pandas 函数可以解决问题。

    我认为您只需编辑 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'))
    
    

    【讨论】:

    • 如何为数据框中的每一行调用这个函数?
    猜你喜欢
    • 2023-04-10
    • 2020-09-13
    • 2016-10-13
    • 2017-07-07
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    相关资源
    最近更新 更多