我有一个运行在多个panda Dataframe 上的进程。有时数据以字节的形式出现,例如:
>>> pd.DataFrame[['x']]
['x']
b'123'
b'111'
b'110'
其他时候它以正整数的形式出现
>>> pd.DataFrame[['x']]
['x']
80
123
491
我想把字节转换成unicode-8,而不去修改常规的整数,现在,我尝试了pd.Dataframe['x'].str.decode('unicode-8')
,当 Dataframe 是字节的形式时,它可以工作,但是当 Dataframe 是整数的形式时,它把所有的值都转换成NaN。
我希望解是矢量化的,因为速度很重要。例如,我不能使用列表解析。
2条答案
按热度按时间rm5edbpk1#
你可以定义一个函数在解码之前先检查。
解码df
输出:
解码另一个df
输出:
bvpmtnay2#
一种方法是推断列的dtype,只有当它是非数值时才尝试将它从bytes转换过来:
试验代码:
输出:
UPDATE:如果列部分为字节,例如x b'80' 123,则可以执行以下操作:
输出: