当系列包含数字时,有关`pd.Series.str`方法的问题

时间:2019-04-26 08:40:43

标签: python pandas

我花了几分钟的时间调试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。

1 个答案:

答案 0 :(得分:0)

str.lower()的工作方式是输入字符串,并返回带有小写字母的 string 以及字符串中的所有字符不是字母就不会改变。

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

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

下壳体算法在Unicode标准的3.13节中进行了描述。如果您想更深入地了解,我邀请您试用。