熊猫的写入或日志打印输出Dataframe
我有一个数据框我希望在Python 2.7中将几行写入文件和记录器。 print(dataframe.iloc[0:4])
输出数据框中列标题和前4行的好网格。然而logging.info(dataframe.iloc[0:4])
抛出:熊猫的写入或日志打印输出Dataframe
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 87: ordinal not in range(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')
这是行得通的,但有没有办法在内存中这样做,以便我可以将它传递给记录器并写入包含其他文本的文件?此外,我希望保留“df .__ str__”输出的列对齐。 – Chris
如果文件名被忽略,'to_csv()'命令输出到控制台。我仍然喜欢格式化和解决编码问题(问题更新 - 对不起法比奥),只是在这里注意这一点,以防其他人有用。 – Chris
其实我不能重现你的'logging.info'问题......也许[this](http://*.com/questions/32686804/encoding-decoding-non-ascii-character-when-using-python-pandas)问题可能会有助于调查python的解码问题。 –
你可以张贴你的原始数据帧的提取物? –