需要使用Pandas Dataframe编辑MySQL表中的行子集

时间:2016-09-17 17:41:56

标签: python mysql pandas pandasql

我正在尝试更改数据库中的表格。但是我发现使用Pandas提供的to_sql方法很困难。我的price_data数据框看起来像这样:

初始数据帧(作为数据库中的行):

enter image description here

用于更改数据的代码:

with con:
    price_data.to_sql(con=con, name='clean_prices2', if_exists='append', index=False, flavor='mysql')

这里的最终目标是修改初始数据帧(将零值转换为Nan,然后插入它们),并将其保存回数据库中。结果应该如下所示(除了相同的id):

期望的输出:

enter image description here

如果你专门查看close_price列,可以看到0值已分配为90.7350

我目前的解决方案是附加数据行,这会导致像这样的重复输入:

实际输出:

enter image description here

最后,我必须执行另一个查询来删除重复的行(基于price_date)

我知道我可以将if_exists参数更改为替换,但这会删除我的数据库表的其余部分。基本上我想在不同的symbol_id

上多次执行此查询

有没有修改子集(在这种情况下,只有3行)而不删除表中的其余数据?解决方案可以修改现有行(保持相同的id)或删除旧行,并创建没有零的新行。我只是想在没有额外删除重复查询的情况下完成此任务。

1 个答案:

答案 0 :(得分:0)

考虑一个具有精确结构的临时表作为最终表,但定期更换,然后将用于更新现有的最终表。尝试使用sqlalchemy engine进行这两项操作。

具体来说,对于后一种SQL,您将在临时表和最终表之间使用UPDATE JOIN查询。下面假设您使用var keyInfo Console.ReadKey(true); var c = Char.ToLower(keyInfo.KeyChar); Console.Write(c); 模块(根据需要进行调整):

pymysql