【问题标题】:How to read a column as bytes?如何将列读取为字节?
【发布时间】:2020-11-14 21:42:36
【问题描述】:

我有一个 pandas DataFrame,其中一列由如下字符串组成

import pandas as pd
df = pd.DataFrame(...)
df
       WORD         
0      '0% de mati\xc3\xa8res grasses'       
1      '115 apr\xc3\xa8s J.-C.'          

对于数据框中的每个字符串,我可以通过b'0% de mati\xc3\xa8res grasses'.decode("utf-8")b'115 apr\xc3\xa8s J.-C.'.decode("utf-8") 将它们读取为bytes。我想问一下如何解码这个专栏。我试过df['WORD'].astype('bytes').str.decode("utf-8"),但无济于事。

非常感谢您的帮助!

【问题讨论】:

  • 您的列当前是您希望转换为字节然后返回(正确编码)字符串的字符串?还是它们最初是字节?
  • 该列不是字节。这是一个解码错误的字符串。读入数据帧时,您能否修复上游并将字符串正确解码为 UTF-8?也许显示该代码。
  • 嗨@BallpointBen,我的专栏目前是我希望转换为字节然后返回(正确编码的)字符串的字符串。

标签: python-3.x pandas string utf-8


【解决方案1】:

很难知道初始编码是什么,但它看起来像 latin-1:

df['WORD'].str.encode('latin-1').str.decode('utf-8')

0    0% de matières grasses
1           115 après J.-C.
Name: WORD, dtype: object

由于输出看起来很合理,我会说这是正确的,但如果文本的开始编码未知,通常没有万无一失的方法来重新编码文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多