python - 当系列包含数字时,关于 `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。
解决方案
str.lower() 的工作方式是它接受一个字符串并返回一个带有小写字母的字符串,并且字符串中任何不是字母的字符都不会改变。
在您的代码中,数字 1 和 2 作为整数而不是字符串输入,这就是为什么在您调用小写方法后它们变为 NA 的原因。如果您想明确它们是字符串,请使用引号。
为什么它只适用于字符串?我相信你根本不能有大写或小写数字或特殊字符。这只是标准化的问题。
Unicode 标准的第 3.13 节描述了小写算法。如果您想更深入地了解,我邀请您掌握它。
推荐阅读
- java - 使用 JSF 控制器中抛出的 spring @ControllerAdvice 管理异常
- swift - 快速隐藏并用视图替换 UITabBar
- spring-boot - Spring Boot 和 Kotlin:动态 Kafka 主题监听器
- azure - Azure Purview - 扫描文件类型
- python - 如何从熊猫数据框中排除特殊字符“\ x”?
- c# - 如何获取所选菜单项的内容?
- android - 如何通过 HDMI 读取显示分辨率?DisplayCompat 直接在 AndroidTV 上很好,但在 AndroidTV Stick 上不行
- postgresql - 如何在没有特定列的情况下导出 postgres db?
- email - sla_miss_callback 在 Apache Airflow 中发送有关缺少任务 SLA 的电子邮件
- xamarin - Xamarin Forms 集成测试