我花了几分钟的时间调试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。
答案 0 :(得分:0)
str.lower()的工作方式是输入字符串,并返回带有小写字母的 string 以及字符串中的所有字符不是字母就不会改变。
在您的代码中,数字1和2是作为整数而不是字符串输入的,这就是为什么在调用小写方法后它们变为NA。如果您想精确指出它们是字符串,请使用引号。
为什么它仅适用于字符串?我相信您根本不能使用大写或小写数字或特殊字符。这只是一个标准化问题。
下壳体算法在Unicode标准的3.13节中进行了描述。如果您想更深入地了解,我邀请您试用。