我有一个数据帧,我使用regex来检查列的数据模式,同时在其中有null。由于有null,它能够匹配。我不想丢弃它们,也不想用其他值替换它。我想忽略它,尽管我试图得到错误或得到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-dddd'
if df['a'].isnull().any():
continue
correct_df = df[df[key].str.match(format )]
wrong_df = df[~df[key].str.match(format )]
输出给出:NONE
当我尝试不忽略null时,我得到了一个错误:'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