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]