我有一个数据框,希望在Python 2.7中将几行写入文件和记录器中。print(dataframe.iloc[0:4])
输出列标题和数据帧中前4行的漂亮网格。但是logging.info(dataframe.iloc[0:4])
抛出:
UnicodeDecodeError:'ascii'编解码器无法解码位置87的字节0xc2:序数不在范围内(128)
这是控制台的输出,可以直接通过控制台或通过print()
(注意²
)工作:
In[89]: d.iloc[0:4] OR print(d.iloc[0:4])
Out[89]:
ISO ID_0 NAME_0 ID_1 NAME_1 ID_2 NAME_2 Area(km.²) Pop2001_Cen Pop2010_Cen HHold2010 Hhold_Size
0 ARG 12 Argentina 2 Ciudad Autónoma de Buenos Aires NaN NaN 203.0 2776138.0 2890151 1150134.0 2.512882
1 ARG 12 Argentina 2 Ciudad Autónoma de Buenos Aires 2001.0 Comuna 1 NaN 171975.0 205886 84468.0 2.437444
2 ARG 12 Argentina 2 Ciudad Autónoma de Buenos Aires 2002.0 Comuna 2 NaN 165494.0 157932 73156.0 2.158839
3 ARG 12 Argentina 2 Ciudad Autónoma de Buenos Aires 2003.0 Comuna 3 NaN 184015.0 187537 80489.0 2.329971
一样file.write(dataframe.iloc[0:4])
等,作为列标题中的一个包括非ASCII字符。我已经试过各种变化decode()
,encode()
等等,但是不能避免这个错误。
print(d.iloc[0:4])
工作,所以另一种方法是使用,print(d.iloc[0:4], file=f)
但即使from __future__ import print_function
出现上述ascii编码错误。
复制此问题的其他方法是logging.info('Area(km.²)')
或'Area(km.²)'.decode()
如何渲染此数据框?
[编辑:]
我还想从根本上理解我如何处理Python 2.7中的字符串编码/解码-我花了很多时间来解决这个问题,因为这不是我唯一遇到此UnicodeDecodeError
错误的时候,我不知道它什么时候会发生,我仍然只是在控制台上进行修复以查看问题所在,而对发生的事情没有任何根本的了解。
IIUC,您可以尝试通过以下方式encoding='utf-8'
写出数据帧的前n行:
df.head(n).to_csv('yourfileout.csv', encoding='utf-8')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句