因此,我正在尝试创建一个python脚本,该脚本允许我在使用pandas创建的数据帧(masterfile)上执行SQL操作。数据帧从特定文件夹中找到的csv文件中提取其内容。 我能够成功地创建其他所有内容,但我在SQL操作部分遇到了麻烦。我正在尝试使用数据帧作为“数据库”,在这里我将使用我的SQL查询来拉取数据,但是我得到了一个"AttributeError:' dataframe‘object has no attribute 'cursor’“错误。 我没有看到很多pandas.read_sql_query()的例子,所以我很难理解我将如何在其中使用我的数据帧。
我们有几个进程,它们使用SQLAlchemy从DB中提取数据,然后使用Pandas来操作数据。我是否在我的sql中使用cast()拉取到较小的数据类型?或者我应该将作为较小的数据类型加载到我的数据帧中?
df = pd.read_sql("select cast(column_name as smallint) from schema.table;")
vs
df = pd.read_sql("select column_name from schema.table;", dtype={"column_name": "int8"}
有没有办法在不遍历每一行的情况下从数据帧中执行SQL update-where?我有一个postgresql数据库,要从数据帧更新数据库中的表,我将使用psycopg2并执行以下操作:
con = psycopg2.connect(database='mydb', user='abc', password='xyz')
cur = con.cursor()
for index, row in df.iterrows():
sql = 'update table set column = %s where column = %s&
我有一个包含2列的数据帧,如下所示:
Index Year Country
0 2015 US
1 2015 US
2 2015 UK
3 2015 Indonesia
4 2015 US
5 2016 India
6 2016 India
7 2016 UK
我想创建一个新的数据帧,其中包含每年国家的最大计数。新的数据帧将包含3列,如下所示:
Index Year Countr
所以我习惯了数据库ETL。在SQL中,我创建表并设置字符长度、数据类型等。据我所知,pandas使用数据帧中所有内容的最大长度。如果您还在使用python,那也没问题,但是我需要显式地指定这些东西。
下面是一些基础代码,欢迎使用指针:
df=pd.Dataframe()
df['ID'] = some data probably i + 1
df['text'] = some text length set to max 255
我有一个函数,它接收数据帧并将其作为表写入SQL。 def insert(df):
with connection.cursor as cur:
cur.execute('''create tablaexyz.xyz
(ID integer,
first_name varchar(100),
last_name varchar(100))''')
d
我有一个sql,它是存储在python中的一个变量中,我们使用SnowFlake数据库。首先,我已经转换成熊猫数据帧使用sql,但我需要转换成火花数据帧,然后存储在一个CreateorReplaceTempView。我试过了:
import pandas as pd
import sf_connectivity (we have a code for establishing connection with Snowflake database)
emp = 'Select * From Employee'
snowflake_connectio
我用pandas库创建了一个数据帧。我想向dataframe中添加一列。然而,我得到了以下error.But,我想我必须输入与lines.How数量一样多的数据,我可以在我想要的行和列中输入信息吗?如果不输入数据,如何创建列? import pandas as pd
kd = pd.DataFrame(data)
insertColumns = kd.insert(0, "Age", [21, 23, 24, 21],True )
print(kd) 错误: ValueError: Length of values (4) does not match length o
我正在尝试将sql查询转换为python。sql语句如下:
select * from table 1
union
select * from table 2
union
select * from table 3
union
select * from table 4
现在我在4个数据帧df1, df2, df3, df4中有了这些表,我想联合4个pandas数据帧,它们将匹配与sql query相同的结果。我搞不懂应该用什么操作来等同于sql union?提前感谢!!
注意:所有数据帧的列名都是相同的。
我有一张桌子,看起来像这样。从CSV文件中读取,所以没有关卡,没有花哨的索引,等等。
ID date1 amount1 date2 amount2
x 15/1/2015 100 15/1/2016 80
我拥有的实际文件是date5和amount 5。我如何将其转换为:
ID date amount
x 15/1/2015 100
x 15/1/2016 80
如果我只有一个变量,我会使用pandas.melt(),但是有了两个变量,我真的不知道如何快速完成。
我可以手动导出到内存中的sqlite3数据库,
我有一个SQLite查询,我想运行多次,根据感兴趣的年份创建多个Pandas数据帧。像这样的东西(但这绝对行不通)。基本上,我试图在year列表上循环创建数据框架,以创建4个数据帧(每年1帧),而且即使经过相当多的Googling搜索,我现在仍然无法做到这一点。
year = [2018, 2019, 2020, 2021]
query = '''
SELECT
some stuff
FROM table
WHERE table.YEAR = ?
'''
for x in year:
df[x] = pd.read_sql_que
我正在尝试加载一个arff文件,并将数据转换为pandas数据帧。然而,当我这样做时,数据可以在上获得:
import numpy as np
import pandas as pd
from scipy.io import arff
dataframe, meta = arff.loadarff('chronic_kidney_disease.arff')
dataframe = pd.DataFrame(dataframe)
dataframe.head()
我得到以下错误:
ValueError: yes value not in ('yes',
我正在寻找一种内存高效的方法,可以将22‘m的记录写入到管道分隔的csv中。
我使用pyodbc和pandas将22‘m的记录拉到数据库中。我的数据帧遇到了内存问题。太多唱片让它卡住了。我知道有文件流方法,但我只将它用于组合CSV,而不是编写数据库查询结果。我可以以某种方式将查询流式传输到磁盘,而不首先访问RAM吗?
import sys
import pandas as pd
import pyodbc as db
import time
import os
print("Connecting to SQL Server database" + time.strftime(