【问题标题】:Python Datacompy library: how to save report string into a csv file?Python Datacompy 库:如何将报告字符串保存到 csv 文件中?
【发布时间】:2020-03-02 22:23:29
【问题描述】:

我正在使用 Datacompy 比较两个数据框,但如何将最终结果保存为 excel 工作表或 csv 文件?我得到了一个字符串作为输出,但是如何将它保存为 CSV。

import pandas as pd
df1_1=pd.read_csv('G1-1.csv')
df1_2=pd.read_csv('G1-2.csv')

import datacompy
compare = datacompy.Compare(
    df1_1,
    df1_2,
    join_columns='SAMPLED CONTENT (URL to content)', 
)

print(compare.report())

【问题讨论】:

  • 你能分享一下输出的样子吗?
  • DataComPy 比较 -------------------- DataFrame 总结 ----------------- DataFrame Columns Rows 0 df1 26 41 1 df2 27 41 Column Summary -------------- 它返回一个 str ,报告,格式还不错。请参阅以下内容:共有列数:26 df1 中但 df2 中没有的列数:0 df2 中但 df1 中没有的列数:1
  • 你有没有让这个工作?我尝试使用comparison_report = compare.report() 并打开一个文件并写入它,但comparison_report 和文件都是空的,它仍然在屏幕上显示报告的输出。

标签: python excel python-3.x csv


【解决方案1】:

我试过这个,它对我有用:

with open('//Path', encoding='utf-8') as report_file:
    report_file.write(compare.report())

【讨论】:

    【解决方案2】:

    如果你只是用pandas,可以试试pandas自己的方式写入csv:

    > df = pd.DataFrame([['yy','rr'],['tt', 'rr'],['cc', 'rr']], index=range(3),
                      columns=['a', 'b'])
    
    > df.to_csv('compare.csv')
    

    我没用过datacompy,但是我建议你可以把你的结果做成dataframe,然后就可以用to_csv的方式了。

    【讨论】:

      【解决方案3】:

      这对我也很好 完整代码

       compare = datacompy.Compare(
          Oracle_DF1,PostgreSQL_DF2, 
          join_columns=['c_transaction_cd','c_anti_social_force_req_id'],  #You can also specify a list of columns
          abs_tol=0, 
          rel_tol=0,
          df1_name = 'Oracle Source', 
          df2_name = 'PostgrSQL Reference'   
          )
          compare.matches(ignore_extra_columns=False)
          Report = compare.report()    csvFileToWrite=r'D://Postgres_Problem_15Feb21//Oracle_PostgreSQLDataFiles//Sample//summary.csv'
          with open(csvFileToWrite,mode='r+',encoding='utf-8') as report_file:
              report_file.write(compare.report())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        • 1970-01-01
        • 2012-02-03
        • 2012-01-22
        • 1970-01-01
        • 2021-06-19
        相关资源
        最近更新 更多