pandas 数据框到 csv 导出问题
pandas dataframe to csv export issue
出现一个奇怪的错误,在 jupyter 笔记中我可以 运行:
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')
我会尝试将代码更改为
df1.to_csv("{0}{1}.csv".format(report_path,db), encoding='utf8-8')
- 很明显您遇到了非 ASCII 字符
- 我的 猜测 是你的 Jupyter 运行 是一个不同于你的脚本的解释器
- 对于非 ASCII 编码,UTF8 是一个不错的选择;如果它不起作用,请查看 Unicode, Dammit。
出现一个奇怪的错误,在 jupyter 笔记中我可以 运行:
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')
我会尝试将代码更改为
df1.to_csv("{0}{1}.csv".format(report_path,db), encoding='utf8-8')
- 很明显您遇到了非 ASCII 字符
- 我的 猜测 是你的 Jupyter 运行 是一个不同于你的脚本的解释器
- 对于非 ASCII 编码,UTF8 是一个不错的选择;如果它不起作用,请查看 Unicode, Dammit。