【发布时间】:2019-12-15 08:26:25
【问题描述】:
我需要在数据框 (https://pastebin.com/kNqLtUWu) 内对 dates 执行验证,检查 date 是否有效。如果date 无效(即pd.to_datetime 无法解析 - 0107-01-06,例如),我需要用Yes 填充Fail 列。
我对包含日期的列进行了子集化,并且能够识别包含无效日期的列并将它们添加到字典中,但还没有弄清楚如何返回特定的行。
我对其他方法持开放态度,但我需要使用 pandas 并最终以 Fail 列指示行,我计划在该行上过滤最终数据帧(一个数据帧包含日期错误的行,另一个没有错误)。
完整代码见 pastebin 链接
# insert empty Fail column to identify date errors
df.insert(loc=0, column='Fail', value="")
# replace all blanks with np.NaN
df.replace(r"^s*$", np.nan, regex=True, inplace = True)
# get list of date columns
cols = list(df)
date_cols = cols[2:]
# create empty dict
dfs = {}
# iterate over date columns to identify which columns contain invalid dates & add to dfs
for col in df[date_cols]:
try:
df[col] = df[col].apply(pd.to_datetime, errors='raise')
except:
print("%s column contains invalid date" % col)
dfs[col] = df[col]
【问题讨论】:
-
无需尝试:
df[col] = pd.to_datetime(df[col], errors='coerce')为您提供pd.NaT,其中to_datetime失败。 -
@QuangHoang,我需要知道哪些值不能解析为日期,以便为这些行填充
Fail列。强制将替换所有无法解析为 NaT 日期的值,甚至是 NaN。即使我没有用 NaN 替换空白也是如此。所以我不确定这将如何帮助确定行?
标签: python-3.x pandas datetime