我是使用DataFrame的新手,我想知道如何在一系列表的多个列上执行左外连接的SQL等价物
例:
df1:
Year Week Colour Val1
2014 A Red 50
2014 B Red 60
2014 B Black 70
2014 C Red 10
2014 D Green 20
df2:
Year Week Colour Val2
2014 A Black 30
2014 B Black 100
2014 C Green 50
2014 C Red 20
2014 D Red 40
df3:
Year Week Colour Val3
2013 B Red 60
2013 C Black 80
2013 B Black 10
2013 D Green 20
2013 D Red 50
Run Code Online (Sandbox Code Playgroud)
基本上我想做类似这样的SQL代码(注意df3没有加入Year):
SELECT df1.*, …Run Code Online (Sandbox Code Playgroud) 我正在尝试将Pandas DataFrame导出到Oracle数据库.我在Pandas中遇到过Write_Frame函数,听起来就像我需要的那样.
但是,我在网上进行了大量的搜索,但却无法让它发挥作用.我已经导入了cx_Oracle并且可以连接到Oracle数据库以及运行SQL查询而没有任何问题,但是当我运行它时它给了我一个' NotImplementedError ':
import pandas.io.sql as psql
output = psql.write_frame(MyResults, name = 'MySchema.MyTable', con = MyCon,
flavor = 'oracle', if_exists = 'replace')
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经在sqlite和mysql上看到了很多关于wrtie_frame的例子,那么这是否意味着如果flavor ='oracle'它将不起作用?我已经尝试将味道改为mysql,但它给我一个错误,说"无效的SQL语句"?
任何人都可以帮我解决这个问题,因为我不想将结果写入CSV文件然后导出到数据库表吗?
谢谢
我正在使用 pandas.io.sql 执行包含 CTE 的 SQL 脚本,并希望执行以下操作:
import pandas.io.sql as psql
param1 = 'park'
param2 = 'zoo'
sqlstr = ("""WITH CTE_A AS (
SELECT *
FROM A
WHERE A.Location = param1),
CTE_B AS (
SELECT *
FROM B
WHERE B.Location = param2)
SELECT A.*, B.*
FROM C
INNER JOIN A
ON C.something = A.something
INNER JOIN B
ON C.something = B.something
WHERE C.combined = param1 || param2
)
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情
result = psql.frame_query(sqlstr, con = db, params = (param1,param2))
Run Code Online (Sandbox Code Playgroud)
有人可以帮我使用 Pandas …
是否可以在Oracle过程中调用Python?我已经读了很多有关相反情况的文献(从Python调用Oracle SQL),但反之则没有。
我想做的是让Oracle产生一个数据库表,然后我想调用Python并将该数据库表传递给DataFrame中的数据表,以便我可以使用Python对它做一些事情并产生结果。在Oracle过程中,我可能需要多次调用Python。有谁知道这是否可行以及如何做到?