isnumeric(), isdigit(), isdecimal()辨析

1. 用法说明

  • isdecimal(): True: Unicode数字,全角数字(双字节);False: 罗马数字,汉字数字,小数;Error: byte数字(单字节)

S.isdecimal() -> bool

  • isdigit(): True: Unicode数字,byte数字(单字节),全角数字(双字节); False: 汉字数字,罗马数字,小数;Error: 无

S.isdigit() -> bool

  • isnumeric(): True: Unicode数字,全角数字(双字节),罗马数字,汉字数字;False: 小数;Error: byte数字(单字节)

S.isnumeric() -> bool

代码示例

s = '123'
print(s.isdigit())  # output:True
print(s.isdecimal())  # output: True
print(s.isnumeric())  # output: True

s = b'123'
print(s.isdigit())    # output:True
print(s.isdecimal())  # output: error
print(s.isnumeric())  # output: error

s = '123.0'
print(s.isdigit())    # output: False
print(s.isdecimal())  # output: False
print(s.isnumeric())  # output: False

s = '三叁'
print(s.isdigit())    # output: False
print(s.isdecimal())  # output: False
print(s.isnumeric())  # output: True  神奇,汉字数字都可以识别

s = 'Ⅲ'
print(s.isdigit())    # output: Fasle
print(s.isdecimal())  # output: Fasle
print(s.isnumeric())  # output: True

s = '2a'
print(s.isdigit())    # output: False
print(s.isdecimal())  # output: False
print(s.isnumeric())  # output: False

Pandas代码示例:

import pandas as pd

df=pd.DataFrame({
'Score': [4.0,6,'3 1/3',7,'43a'],
'Foo': ['Nis','and stimpy','d','cab','abba'],
'Faggio':[0,1,0,1,0]
})
print(df)

df1 = df[df['Score'].str.isnumeric().isnull()]
print(df1)

df2 = df[df['Score'].str.isdigit().isnull()]
print(df2)

output:

Score Foo Faggio
0 4.0 Nis
1 6 and stimpy
2 3 1/3 d
3 7 cab
4 43a abba

Score Foo Faggio
0 4.0 Nis
1 6 and stimpy
3 7 cab

Score Foo Faggio
0 4.0 Nis
1 6 and stimpy
3 7 cab
posted @ 2022-06-02 12:50  EconCoder  阅读(28)  评论(0)    收藏  举报