如何 - 将 python 生成器转换为 pandas 数据帧
HOW - to convert a python generator to pandas dataframe
我是 python 和 pandas 数据帧的新手,我正在努力思考如何将 python 生成器转换为 pandas 数据帧。
我想做的是用这个函数将一个大的 table 提取成块,生成一个生成器:
def fetch_data_into_chunks(cursor, arraysize=10**5):
while True:
results = cursor.fetchmany(arraysize)
if not results:
break
for result in results:
yield result
然后我想将结果附加或连接到 pandas 数据框:
for data in fetch_data_into_chunks(cursor):
df.append(data)
但这不起作用并给我错误消息:
TypeError: cannot concatenate object of type "<class 'pyodbc.Row'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
感谢您的帮助!
假设您连接到 sql 数据库,您可以使用 Pandas 的内置 read_sql
方法并指定块大小。这本身就是一个生成器,您可以对其进行迭代以创建单个数据框。
在此示例中,sql
是您的 sql 查询,conn
是与您的数据库的连接。
def fetch_data(sql, chunksize=10**5):
df = pd.DataFrame()
reader = pd.read_sql(sql,
conn,
chunksize=chunksize)
for chunk in reader:
df = pd.concat([df, chunk], ignore_index=True)
return df
我是 python 和 pandas 数据帧的新手,我正在努力思考如何将 python 生成器转换为 pandas 数据帧。
我想做的是用这个函数将一个大的 table 提取成块,生成一个生成器:
def fetch_data_into_chunks(cursor, arraysize=10**5):
while True:
results = cursor.fetchmany(arraysize)
if not results:
break
for result in results:
yield result
然后我想将结果附加或连接到 pandas 数据框:
for data in fetch_data_into_chunks(cursor):
df.append(data)
但这不起作用并给我错误消息:
TypeError: cannot concatenate object of type "<class 'pyodbc.Row'>"; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid
感谢您的帮助!
假设您连接到 sql 数据库,您可以使用 Pandas 的内置 read_sql
方法并指定块大小。这本身就是一个生成器,您可以对其进行迭代以创建单个数据框。
在此示例中,sql
是您的 sql 查询,conn
是与您的数据库的连接。
def fetch_data(sql, chunksize=10**5):
df = pd.DataFrame()
reader = pd.read_sql(sql,
conn,
chunksize=chunksize)
for chunk in reader:
df = pd.concat([df, chunk], ignore_index=True)
return df