【发布时间】:2020-04-10 03:09:29
【问题描述】:
main_df:
Name Age Id DOB
0 Tom 20 A4565 22-07-1993
1 nick 21 G4562 11-09-1996
2 krish AKL F4561 15-03-1997
3 636A 18 L5624 06-07-1995
4 mak 20 K5465 03-09-1997
5 nits 55 56541 45aBc
6 444 66 NIT 09031992
column_info_df:
Column_Name Column_Type
0 Name string
1 Age integer
2 Id string
3 DOB Date
如何从主 df 中找到数据类型错误值。例如,从列信息 df 我们可以看到“名称”是一个字符串列,因此在主 df 中,“名称”列应该包含字符串或字母数字,而不是它是一个错误。我需要在单独的 df 中找到这些数据类型错误值。
错误输出df:
Column_Name Current_Value Exp_Dtype Index_No.
0 Name 444 string 6
1 Age 444 int 2
2 Name 56441 string 6
0 DOB 4aBc Date 5
0 DOB 09031992 Date 6
我试过这个:
for i,r in column_info_df.iterrows():
if r['Column_Type'] == 'string':
main_df[r['Column_Name']].loc[main_df[r['Column_Name']].str.match(r'[^a-z|A-Z]+')]
elif r['Column_Type'] == 'integer':
main_df[r['Column_Name']].loc[main_df[r['Column_Name']].str.match(r'[^0-9]+')]
elif r['Column_Type'] == 'Date':
我卡在这里,因为这个 RE 没有捕捉到所有错误。我不知道如何更进一步?
【问题讨论】:
-
为什么
444是无效的字符串数据类型?它可以作为字符串或整数有效。 -
因为字符串列应该至少有一个字母。
-
你没有检查数据类型,这与数据类型无关。您只是想检查数据内容以及它们是否符合某些规则。
标签: python regex python-3.x pandas python-2.7