Pandas.Series.nbytes处理字符串的计算逻辑?结果不符预期
为什么
pd.Series.nbytes返回24? 当Series的 dtype 是object时,nbytes统计的是存储对象指针的总字节数,不是字符串内容本身的字节总和。
- 64位系统里,每个对象指针占8字节,你的Series有3个元素,3×8=24,这就是结果的由来。
- 你用
s.str.encode().str.len().sum()算的是每个字符串编码后的实际字节数总和,和nbytes的统计逻辑完全两回事:utf-8/ascii编码下,"Ant"3字节、"Bear"4字节、"Cow"3字节,加起来10,和你得到的结果一致;utf-16编码会给每个字符串加字节序标记,每个字符串的字节数是(长度×2+2),算下来就是8+10+8=26,也和你的输出匹配。
如果要统计字符串内容的总字节数,你用的编码后求和的方式是对的,但nbytes的作用是反映Series底层存储结构的占用大小,不是元素内容的字节数。
内容的提问来源于stack exchange,提问作者MCornejo
相关产品推荐
相关产品推荐

