我希望解决以下两种可能情况的问题:
在事先不知道字符串序列是
UTF-8
还是字节的情况下。pd.Series
中的字符串是混合字节和UTF-8/
的情况。
我猜这两种情况有相同的解决方案。
目前的情况为:
b = pd.Series(['123', '434,', 'fgd', 'aas', b'442321'])
b.str.decode('utf-8')
如果字符串已经是UTF-8格式,则将其转换为NaNs
。或者它们会自动转换为ASCII码?例如,我可以在decode
函数中使用error
参数,以便字符串在已经是UTF-8编码时保持“未解码”吗?文档字符串似乎没有提供太多信息。
还有没有更好的方法来实现这一点?
另外,在pandas中是否有类似于.str.decode
的字符串方法,当一个字符串是bytes
或UTF-8
时只返回True/False?
编辑:
我能想到的一个选项是:
b = pd.Series(['123', '434,', 'fgd', 'aas', b'442321'])
converted = b.str.decode('utf-8')
b.loc[~converted.isnull()] = converted
那么这是推荐的方式吗?看起来有点绕。我猜更优雅的方法实际上只是一种检查一个系列中所有元素是否为字节的str
的方式,并返回一个布尔数组,其中是这种情况。