我有多个数据集,其中包含一个公共列 - GuestCode。对于所有数据集,我想创建另一列来告诉我 GuestCode 是否在每一行中都包含字母。
我能够使用以下代码成功地为其中一个数据集执行此操作:
df['TestResult'] = df['GuestCode'].str.contains(r"[^a-zA-Z\s']", regex=True)
访客代码 | 测试结果 |
---|---|
5885 | 在 |
CCM6505 | 真的 |
我不是 100% 确定,但我认为这行得通,因为在这个数据集中,GuestCode 在数据框中被读取为“对象”数据类型。
但是,当我在 GuestCode 中仅包含数值的数据集上尝试相同的代码时,相同的代码不起作用,因为 GuestCode 被读取为“浮点数”。收到一个后
AttributeError: Can only use .str accessor with string values!
我修改了代码,但没有得到正确的结果。
df['TestResult'] = df['GuestCode'].astype(str).str.contains(r"[^a-zA-Z\s']", regex=True)
访客代码 | 测试结果 |
---|---|
4445 | 真的 |
CCM6515 | 真的 |
我没有嫁给正则表达式解决方案,我只需要一种方法来成功识别我在 GuestCode 列中是否有字母字符。
提前致谢。
字符类[^a-zA-Z\s']
匹配除 a-zA-Z、空白字符或'
如果您只想检查字符 A-Za-z,您可以使用
df['TestResult'] = df['GuestCode'].astype(str).str.contains(r"[a-zA-Z]", regex=True)
或者
df['TestResult'] = df['GuestCode'].astype(str).str.match(r"[a-zA-Z]")
输出
GuestCode TestResult
0 4445 False
1 CCM6515 True
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句