【问题标题】:Query MySQL Database with Parameters From Dataframe Pandas使用 Dataframe Pandas 中的参数查询 MySQL 数据库
【发布时间】:2020-08-23 22:39:36
【问题描述】:

我有一个带有唯一电子邮件地址的数据框。我想从 Mysql 数据库的金额列中选择所有amount,其中电子邮件与数据库中的电子邮件列匹配。

这是我的 df

       email
0      w@g.com
1      y@g.com
2      z@g.com
3      i@g.com
4      p@g.com

这是我的代码

for index, row in df.iterrows():
    print(row['email'])
    scr_device_numbers = pd.read_sql("SELECT amount from db.table WHERE email = %s LIMIT 5", dbConnection, params=row['email'])
    Calculate the average for each of the email

我必须为每封和所有独特的电子邮件进行计算。

【问题讨论】:

  • 我不明白你的问题是什么问题?您要执行什么计算?
  • 计算平均值
  • 所以你有一个电子邮件列表,对于每封电子邮件,你想计算电子邮件列是该电子邮件的平均金额吗?
  • 是的,实际上它要复杂得多,但如果我能得到帮助的话。我可以从那里拿走它

标签: python mysql sql pandas dataframe


【解决方案1】:

IIUC:

s = pd.Series(['w@g.com', 'z@g.com', 'i@g.com', 'p@g.com'])

def get_query(email):
    query = f'''
    SELECT AVG(amount)
    FROM db.table
    WHERE email = {email}
    '''

    return pd.read_sql_query(query, dbConnection).iloc[0,0]

s.apply(get_query)

【讨论】:

  • 很努力,但它没有循环播放整个系列
  • 是的。确实如此。在 apply 方法中,您将函数应用于系列中的所有值
猜你喜欢
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 2017-05-01
  • 2020-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多