【发布时间】:2020-10-22 19:26:14
【问题描述】:
我正在读取包含各种类型列的 CSV 文件。
df = pd.read_csv('file_name.csv')
df.head()[columnname]
0 b'Hi,\r\n\r\nI hope you are well.'
1 b"\xc2\xa0Hello,\r\n\xc2\xa0\r\n "
2 b"\r\n\r\n blah blah blah"
3 NaN
4 b'blah blah blah'
Name: columnname, dtype: object
据我了解,b'' 格式意味着它是一个字节字符串,我必须将其.decode('utf-8') 转换为 ascii 格式的字符串,并删除 b'' 以及像 \xc2\xa0 这样的编码。但是,当我尝试解码时,出现错误。
df[columnname] = df[columnname].apply(lambda x: x.decode('utf-8'))
AttributeError: 'str' object has no attribute 'decode'
我认为发生了什么是从 csv 文件读取时,该列设置为str 数据类型,例如"b'Hi...'"。所以我检查了原始的 CSV 文件,我看到了previous_column,"b'Hi....'", next_column。有没有办法将此列正确读取为字节字符串,以便我以后可以调用解码函数?
我还尝试在pd.read_csv() 函数中为该特定列设置dtype=np.bytes_,并在读取csv 后调用df.astype,但都不起作用。我最后的手段是使用正则表达式手动删除编码。
【问题讨论】:
-
您能给我们展示一下 CSV(或其中的一小部分)进行测试吗?该列似乎是 python
bytes对象的字符串表示形式。那是该列中应该包含的内容吗?在 CSV 中拥有它有点奇怪,但也许这就是目的。
标签: python pandas dataframe utf-8 ascii