Pandas df读取每一行,返回带有df中新列的SQL查询

时间:2018-06-07 17:35:36

标签: python sql pandas dataframe

我将以下pandas数据帧作为df,我想查询将从SQL Server数据库返回相应git rebase -i的{​​{1}}的每一行,并使用列'id','qty'填充df ,'item','item_description'

df['item']

我正在做以下事情:

item_description

并将其作为带有

的df返回
|  id | qty  | item |
+-----+------+------+
| 001 |  700 | CB04 |
| 002 |  500 |      |
| 003 | 1500 | AB01 |

结果:

query = "select item_description from item_book WHERE item in {}".format(tuple(df['item']))

我计划将两个dfs连接在一起,这可能不起作用,因为我在df的第二行中有一个空值而我的查询只返回了两行。

是否有更有效的方法来执行此操作。

1 个答案:

答案 0 :(得分:0)

更改SQL查询以返回item和item_description列,为您提供如下数据框:

   item item_description
0  CB04            apple
1  AB01           orange

然后你有一个公共列,可用于将merge函数连接到两个数据框:

pd.merge(original_df, desc_df, on="item", how="left")

我们可以省略on参数,因为每个数据框中只有一列具有相同的名称,并且pandas会知道它们应该加入什么。但是how参数是必要的,以保留第一个数据帧( -most参数到merge)中的任何行,这些行在第二个数据帧中没有相应的行数据帧。结果是:

   id   qty  item item_description
0   1   700  CB04            apple
1   2   500                    NaN
2   3  1500  AB01           orange

您可以在pandas documentation中了解有关合并的更多信息。