【问题标题】:Pandas Dataframe displays results inside brackets with commasPandas Dataframe 用逗号在括号内显示结果
【发布时间】:2021-05-11 04:52:36
【问题描述】:

我正在使用pd.read_sql() 将数据读入数据框。这 数据库是Oracle,Oracle 连接模块是JayDeBeApi

问题: 连接成功,我也可以检索数据。 但是当我打印数据框时,它看起来像下面的不同

df[['APPL_ID','ACTV_IND','LST_UPDT_TS']]

(A, P, P, L, _, I, D)   (A, C, T, V, _, I, N, D)    (L, S, T, _, U, P, D, T, _, T, S)
0   101 (Y) 2012-05-29 11:04:51.110840
1   102 (Y) 2013-10-04 18:42:39.143024

【问题讨论】:

    标签: python sql pandas dataframe jaydebeapi


    【解决方案1】:

    我假设您将jpypejaydebeapi 一起使用,因为我以前在这种设置中看到过这种确切的行为(另请参阅this SO answer and the comments)。

    您可以通过更改连接来处理症状(请参阅其他答案)或首先防止问题发生,例如通过以下两种方式之一:

    1. 使用jaydebeapi 而不使用jpype

      当这个问题发生在我身上时,我注意到jpype 的使用既是原因,也是不必要的。我在本地将驱动程序作为.jar 文件,并且在没有jpype 的情况下我的连接工作正常:

      import jaydebeapi as jdba
      import pandas as pd
      import os
      
      db_host = 'db.host.com'
      db_port = 1521
      db_sid = 'YOURSID'
      
      jar=os.getcwd()+'/ojdbc6.jar'
      
      conn = jdba.connect('oracle.jdbc.driver.OracleDriver', 
                      'jdbc:oracle:thin:@' + db_host + ':' + str(db_port) + ':' + db_sid, 
                      {'user': 'USERNAME', 'password': 'PASSWORD'}, 
                      jar
                      )
      
      df_jay = pd.read_sql('SELECT * FROM YOURSID.table1', conn)
      
      conn.close()
      

      这正确创建了数据框。

    2. 改用cx_Oracle

      如果我使用cx_Oracle 连接到Oracle db,也不会出现此问题:

      import cx_Oracle
      import pandas as pd
      import os
      
      db_host = 'db.host.com'
      db_port = 1521
      db_sid = 'YOURSID'
      
      dsn_tns = cx_Oracle.makedsn(db_host, db_port, db_sid)
      cx_conn = cx_Oracle.connect('USERNAME', 'PASSWORD', dsn_tns)
      
      df_cxo = pd.read_sql('SELECT * FROM YOURSID.table1', con=cx_conn)
      
      cx_conn.close()
      

      注意:要使cx_Oracle 工作,您必须安装并正确设置Oracle Instant Client(参见例如cx_Oracle documentation for Ubuntu)。

    【讨论】:

    • 谢谢!我使用了选项 1,它奏效了。
    • 不客气,很高兴为您提供帮助。但是没有必要在评论中说“谢谢”。如果您觉得答案有帮助,您可以决定通过 accepting it 向其他用户展示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 2017-06-01
    • 2020-02-21
    相关资源
    最近更新 更多