首页 > 解决方案 > 当系列包含数字时,关于 `pd.Series.str` 方法的问题

问题描述

我花了好几分钟调试一个 ETL 过程,最后在使用pd.Series.str. 只是想知道为什么.str方法不会将其他类型转换为 str。

d = pd.Series((1,2,'A'))
d.str.lower()

生产

0    NaN
1    NaN
2      a

顺便提一句。这里的解决方法是使用.apply(str)将原始 dtype 显式转换为 str。

标签: pythonpandas

解决方案


str.lower() 的工作方式是它接受一个字符串并返回一个带有小写字母的字符串,并且字符串中任何不是字母的字符都不会改变。

在您的代码中,数字 1 和 2 作为整数而不是字符串输入,这就是为什么在您调用小写方法后它们变为 NA 的原因。如果您想明确它们是字符串,请使用引号。

为什么它只适用于字符串?我相信你根本不能有大写或小写数字或特殊字符。这只是标准化的问题。

Unicode 标准的第 3.13 节描述了小写算法。如果您想更深入地了解,我邀请您掌握它。


推荐阅读