问题来源:
在做数据开发的时候,使用pandas读取了excel中数据,存储格式统一为str
类型,之后为了方便操作,将DataFrame格式的数据转换为了numpy.ndarray
格式的数据。
之后对ndarray的数据进行遍历,并且将符合要求的数据,做格式化处理,再将其存储到ndarray中。
问题:
当要处理的字符串为最长的字符串时,在其长度增长后,又把新字符串对它重新进行赋值,然后发现新的字符串并没有完整的保存在ndarray数组中。
解决:
由于numpy中的ndarray要求所有数据为同一种类型,所以在创建时我使用dtype=str
。此时numpy会根据创建时所有元素的最大字符串长度设定str
的类型。
例如:
所有元素中的最大字符串长度为11,则会将str的类型设置为'<U11'
。此时所存储最大字符串长度就被设置为了11,超过这个长度都会被截取,在进行赋值。并且不会抛出任何异常。
所以我在创建数组时,就将dtype设置为 '<U750'
,这是根据数据库中最大字符长度设定的值。