提问人:user22826714 提问时间:10/30/2023 最后编辑:user22826714 更新时间:10/30/2023 访问量:47
使用 python 从数据库中读取 csv 数据作为 DataFrame 时出现错误的列,但在 jupiter notebook 中执行时出现正确的列
Wrong columns when reading csv data from a DB as DataFrames with python, but right columns when executin in jupiter notebook
问:
我的数据库中有一个表,其中有 8 列,1 列用于 id,7 列以二进制形式存储 csv 数据作为 BLOB,我读取 csv 数据,将其解剖并将 7 个 csv 列中的每一列保存在一个 panda 数据帧中。
我的代码如下:
engine = create_engine('sqlite:///test.db')
metadata_obj = MetaData()
metadata_obj.reflect(bind=engine)
Tabla1 = Table('Tabla1', metadata_obj, autoload_with=engine)
Session = sessionmaker(bind=engine)
session = Session()
query1= session.query(Tabla1).filter_by(idCliente=2).all()
for i in query1:
df1=pd.DataFrame(pickle.loads(i.df1))
df2=pd.DataFrame(pickle.loads(i.df2))
df3=pd.DataFrame(pickle.loads(i.df3))
df4=pd.DataFrame(pickle.loads(i.df4))
df5=pd.DataFrame(pickle.loads(i.df5))
df6=pd.DataFrame(pickle.loads(i.df6))
df7=pd.DataFrame(pickle.loads(i.df7))
df_list = [df1, df2, df3, df4, df5, df6, df7]
df_names = ['df1', 'df2', 'df3', 'df4', 'df5', 'df6', 'df7']
df_dict = dict(zip(df_names, df_list))
print(df1.columns)
当我在 jupyter notebook 中执行此代码时,我没有问题,并且我获得了数据帧的正确列名,但是如果我在 cmd 中作为 python main.py 执行,我没有得到正确的列,而是将数据的第一行设置为列。 我该如何解决这个问题?
我已经检查了 jupyter notebook 和我的脚本上的 python、pandas、sqlalchemy 和 pickle 的版本:
print('pandas',pd.__version__)
print('sqlalchemy',sqlalchemy.__version__)
print('python',python_version())
print('pickle',pickle.format_version)
我在两者上都得到了相同的版本:
pandas 2.1.0
sqlalchemy 2.0.21
python 3.9.13
pickle 4.0
答: 暂无答案
评论
print(pickle.loads(i.df1))
print(type(pickle.loads(i.df1)))
pd.DataFrame
df1.columns
df_list
df_names
df_dict