gpt4 book ai didi

python - 将复杂 SQL 转换为 Python Pandas 合并和/或连接

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:33 24 4
gpt4 key购买 nike

我目前有一个Python脚本,它可以将两个pandas DataFrames转换为内存中SQLite数据库中的表,然后再在表上读取和运行SQL代码。我希望脚本更加“Pythonic”,合并和/或加入 DataFrames,但我很难找到相当于 SELECTing 的 Python 代码示例两个表中的特定(而非全部)元素,以及 FROMWHEREORDER BY 子句。我对 Python 相当陌生,并且是我部门的豚鼠,所以如果我能让这个工作正常,它将成为我工作组中的合作伙伴的更多脚本的模板。实际元素名称已更改为专有信息,但结构是相同的。预先感谢您的帮助!

SELECT
dfE.Element05 AS [Alt Element05],
dfE.Element03 AS [Alt Element03],
dfE.Element04 AS [Alt Element04],
dfN.Element03,
dfN.Element04,
dfN.Element08,
dfN.Element09,
dfN.Element10,
dfN.Element17,
dfN.Element18,
dfN.Element19,
dfN.Element20,
dfN.Element23,
dfN.Element26,
dfN.Element13
FROM dfE INNER JOIN dfN ON (dfE.Element17 = dfN.Element17) AND (dfE.Element20 = dfN.Element20)
WHERE (((dfN.Element03)<>dfE.Element03))
GROUP BY
dfE.Element05,
dfE.Element03,
dfE.Element04,
dfN.Element03,
dfN.Element04,
dfN.Element08,
dfN.Element09,
dfN.Element10,
dfN.Element17,
dfN.Element18,
dfN.Element19,
dfN.Element20,
dfN.Element23,
dfN.Element26,
dfN.Element13
ORDER BY
dfE.Element03,
dfN.Element03,
dfN.Element08

最佳答案

我首先复制要加入的 DataFrame 并选择其中的特定列。我已经包含了 dfE 中的“Element17”和“Element20”,因为您在加入时需要它。

例如。

df1 = dfE['Element05,'Element03','Element04','Element17','Element20'].copy()

要重命名列,请使用以下命令:

df1.rename(columns={'Element05':'Alt Element05','Element03':'Alt Element03','Element04':'Alt Element04'},inplace=True)

一旦设置了另一个 df(将其命名为 df2),您将使用 pd.merge() 来连接它们,就像在 SQL 中一样。 *使用 pd.merge 时,您要加入的列必须具有相同的名称,否则将无法工作! (假设 df1['A'] 与 df2['B'] 共享相同的数据,并且您想要加入 DataFrame。您必须更改其中一个 DataFrame 的名称,使其等于您要加入的 Df,否则它将无法工作。)

例如。

df3 = pd.merge(df1,df1,how='inner',on=['Element17','Element20'])

对于 Where 我会执行以下操作。

df3= df3[df3['Alt Element03']!=df3['Element']]

对于Order By,您可以使用.sort(),但我不太愿意向您提供有关如何使用它的建议,因为我没有经常使用它。

我希望这有帮助!如果您有疑问,请告诉我。

*** 这可能不是最好的做事方式。如果我导致你养成坏习惯,我事先道歉。我也是 python 新手!

关于python - 将复杂 SQL 转换为 Python Pandas 合并和/或连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60287859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com