如何在 python 中进行匹配时忽略空值?
How to ignore nulls while doing matching in python?
我有一个数据框,我在执行此操作时使用正则表达式检查列数据的模式,其中有空值。由于空值,它能够匹配。我不想删除它们,也不想用其他值替换它。我想忽略它,尽管我尝试获取错误或获取 NONE 作为输出。我们如何在进行匹配时忽略空值?
代码:
df =
a b c
0 rt-0000 abc 1
1 vb 2
2 rt-1234 abc 3
3 op 4
4 rt-123 oip 5
format = 'rt-\d\d\d\d'
if df['a'].isnull().any():
continue
correct_df = df[df[key].str.match(format )]
wrong_df = df[~df[key].str.match(format )]
输出给出:NONE
当我尝试不忽略空值时出现错误:'Cannot mask Naan/Null values'
异常输出:
corrected_df:
a b c
0 rt-0000 abc 1
1 vb 2
2 rt-1234 abc 3
3 op 4
wrong_df:
4 rt-123 oip 5
我尝试使用不同的 if 条件,但最终得到相同的输出。我们可以忽略空值吗?
对于:
df = pd.DataFrame({'a':['rt-0000',np.nan,'rt-1234',np.nan,'rt-123'],
'b':['abc','vb','abc','op','oip'],
'c':[1,2,3,4,5]})
a b c
0 rt-0000 abc 1
1 NaN vb 2
2 rt-1234 abc 3
3 NaN op 4
4 rt-123 oip 5
您可以简单地使用:
correct_df = df[df.a.str.match(format, na=True)]
wrong_df = df[~df.a.str.match(format, na=True)]
这给出了你的结果:
a b c
0 rt-0000 abc 1
1 NaN vb 2
2 rt-1234 abc 3
3 NaN op 4
和
a b c
4 rt-123 oip 5
我有一个数据框,我在执行此操作时使用正则表达式检查列数据的模式,其中有空值。由于空值,它能够匹配。我不想删除它们,也不想用其他值替换它。我想忽略它,尽管我尝试获取错误或获取 NONE 作为输出。我们如何在进行匹配时忽略空值?
代码:
df =
a b c
0 rt-0000 abc 1
1 vb 2
2 rt-1234 abc 3
3 op 4
4 rt-123 oip 5
format = 'rt-\d\d\d\d'
if df['a'].isnull().any():
continue
correct_df = df[df[key].str.match(format )]
wrong_df = df[~df[key].str.match(format )]
输出给出:NONE
当我尝试不忽略空值时出现错误:'Cannot mask Naan/Null values'
异常输出:
corrected_df:
a b c
0 rt-0000 abc 1
1 vb 2
2 rt-1234 abc 3
3 op 4
wrong_df:
4 rt-123 oip 5
我尝试使用不同的 if 条件,但最终得到相同的输出。我们可以忽略空值吗?
对于:
df = pd.DataFrame({'a':['rt-0000',np.nan,'rt-1234',np.nan,'rt-123'],
'b':['abc','vb','abc','op','oip'],
'c':[1,2,3,4,5]})
a b c
0 rt-0000 abc 1
1 NaN vb 2
2 rt-1234 abc 3
3 NaN op 4
4 rt-123 oip 5
您可以简单地使用:
correct_df = df[df.a.str.match(format, na=True)]
wrong_df = df[~df.a.str.match(format, na=True)]
这给出了你的结果:
a b c
0 rt-0000 abc 1
1 NaN vb 2
2 rt-1234 abc 3
3 NaN op 4
和
a b c
4 rt-123 oip 5