gpt4 book ai didi

python - 如何在Python中识别字符串和字母数字字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:32 25 4
gpt4 key购买 nike

Df1:
Name Emp_Id Desgn Salary
0 Rick F912-1 Engg 4500
1 Monty 56Df1 Doc 6700
2 Chris J45-12 Arch2 7800.0
3 Julie Klgi Engg-A KL00
4 Mashy1 5670 Law_y 4100.0

Df2:

COL_NAME DATATYPE
Name string
EMP_Id AlphaNum
Design string
Salary Floatorint

如何循环数据帧以检查值数据类型是否有效?我想根据 df2 数据类型信息检查每个列值数据类型并返回错误的数据类型值。例如,字符串列应包含字符串(无数字),字母数字数据类型必须是至少 1 个数字和 1 个字母的组合。

输出:

Col_name  value    dtype   Row_Num
Name Mashy1 string 4
Emp_Id Klgi AlphaNum 3
Emp_Id 5670 AlphaNum 4
Design Arch2 string 2
Salary KL00 Floatorint 3

最佳答案

虽然可以使用正则表达式解决这个问题,但我选择了 Python 解决方案,借鉴 here .

首先,一个辅助函数来确定字符串是否包含数字。

def hasNumbers(inputString):
return any(char.isdigit() for char in inputString)

第二,一个将对象分类为指定类型的函数。

def determine_type(x):
# check if x is a number
if isinstance(x, (int, float, np.int64, np.float64)):
return "int or float"

# check if x is a string
elif isinstance(x, str):
# check if the string contains a digit
if hasNumbers(x):
return "alphanumeric"
else:
# it's a string
return "string"

请注意此处将 intfloat 转换为字符串的边缘情况。 “5”是字母数字。

让我们制作数据框,并将任何可以转换为数字的内容转换为数字:

"""
name emp_id design salary
0 Rick F912-1 Engg 4500
1 Monty 56Df1 Doc 6700
2 Chris J45-12 Arch2 7800.0
3 Julie Klgi Engg-A KL00
4 Mashy1 5670 Law_y 4100.0
"""
df1 = pd.read_clipboard().reset_index(drop=True)
df1 = df1.applymap(lambda x: pd.to_numeric(x, errors="ignore"))

display(df1)

输出:

     name  emp_id  design salary
0 Rick F912-1 Engg 4500
1 Monty 56Df1 Doc 6700
2 Chris J45-12 Arch2 7800
3 Julie Klgi Engg-A KL00
4 Mashy1 5670 Law_y 4100

现在,让我们将此数据框融合为您请求的格式,并应用我们的自定义函数。

# melt the df
df1_melted = df1.reset_index().melt(id_vars="index").sort_values("index")

# apply our function
df1_melted["type"] = df1_melted["value"].apply(determine_type)
print(df1_melted.head(10))

输出:

    index variable   value          type
0 0 name Rick string
5 0 emp_id F912-1 alphanumeric
10 0 design Engg string
15 0 salary 4500 int or float
1 1 name Monty string
6 1 emp_id 56Df1 alphanumeric
11 1 design Doc string
16 1 salary 6700 int or float
2 2 name Chris string
17 2 salary 7800 int or float

这里的大部分工作是编写(破解)自定义函数来确定数据类型。我强烈建议坚持使用内置类型,无论是纯 Python 还是 numpy。如果某物是字符串,那么你可以做进一步的分析。

关于python - 如何在Python中识别字符串和字母数字字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59202594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com