如何在 Pandas DF 中查找特定列中的字符串不适合模式的行?



enter code here我有以下Pandas DF:

col1     col2
0 "text 0" "1979.10.01."
1 "text 1" "1989.11.02."
2 "text 2" "2001.13.03."
3 "text 3" "2012.11.04."
4 "text 4" "1999.01.04."

现在我想要得到col2不适合YYYY.MM.DD.模式的行。额外的问题:如何不仅检查模式,还检查日期的有效性(例如,如果第0行第13个月无效(。

您可以在Series.str.contains:中测试数字模式4digits.2digits.2digits

df1 = df[~df['col2'].str.contains('d{4}.d{2}.d{2}.')]

对于第二种情况,可以尝试在YYYY.MM.DD.中转换为日期时间,如果失败,则生成丢失的值,所以最后一次过滤它们:

df2 = df[pd.to_datetime(df['col2'], format='%Y.%m.%d.', errors='coerce').isna()]
print (df2)
col1         col2
2  text 2  2001.13.03.

详细信息

print (pd.to_datetime(df['col2'], format='%Y.%m.%d.', errors='coerce'))
0   1979-10-01
1   1989-11-02
2          NaT
3   2012-11-04
4   1999-01-04
Name: col2, dtype: datetime64[ns]

最新更新