代码之家  ›  专栏  ›  技术社区  ›  chowpay

熊猫数据框到csv导出问题

  •  1
  • chowpay  · 技术社区  · 6 年前

    在jupyter notes中,我可以运行一个奇怪的错误:

    df1.to_csv("{0}{1}.csv".format(report_path,db))  
    

    我的csv很好。

    当我尝试在jupyter之外执行相同的操作时,请将上述内容放入一个文件,一个外部文件,然后运行以下命令:

        #imports requred to run querys
        import pandas as pd
        from pandas import DataFrame,Series
        import numpy as np
        from pyhive import presto
        import matplotlib.pyplot as plt
        import seaborn as sn    
    
     #run config file, which contains the query to generate the report
        def run_config(db):
            print args.an
            print ("config is = {0}".format(config))
            with open(config) as cfg:
                v = cfg.read()
            exec v
    

    我收到以下错误:

    lib.write_csv_rows(self.data, ix, self.nlevels, self.cols, self.writer)
    File "pandas/_libs/lib.pyx", line 1035, in pandas._libs.lib.write_csv_rows
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 8-11: ordinal not in range(128)
    

    我很确定是我的DF中的某些东西导致了这个错误,因为其他DF没有这个问题。但我不知道如何修复或编辑代码来捕获这一点。

    修复

    df1.to_csv("{0}{1}.csv".format(report_path,db), encoding='utf8-8')
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Ami Tavory    6 年前

    我会尝试将代码更改为

    df1.to_csv("{0}{1}.csv".format(report_path,db), encoding='utf8-8')
    
    1. 很明显,您遇到的字符不是ASCII码
    2. 我的 猜测 你的Jupyter运行的解释器与你的脚本不同
    3. 对于非ASCII编码,UTF8是一个很好的首选;如果不起作用,看看 Unicode, Dammit .