【发布时间】:2020-10-28 12:41:24
【问题描述】:
我有一个如下的数据框:
ID Date_Loading Date_delivery Value
001 01.11.2017 20.11.2017 200.34
002 %^&**##_ 15.01.2018 300.05
003 11.12.2018 _%67* 7*7%
我们可以看到,除了ID 列之外,我在所有列中都有特殊字符。
目标:将这些特殊字符替换为None。所以最终的数据框应该是这样的:
ID Date_Loading Date_delivery Value
001 01.11.2017 20.11.2017 200.34
002 Null 15.01.2018 300.05
003 11.12.2018 Null Null
下一步,我想将日期列解析为 YYYY-MM-DD 格式。
为了实现这一点,我使用以下代码 sn-p:
for c in df.columns.tolist():
df[c] = df[c].astype(str).str.replace(r"[^A-Za-z0-9]"," ")
df['Date_Loading'] = pd.to_datetime(df['Date_Loading'],error='coerce',format='YYYY-MM-DD')
df['Date_delivery'] = pd.to_datetime(df['Date_Loading'],error='coerce',format='YYYY-MM-DD')
但是上面的代码是行不通的!!!即使我尝试替换,它也不起作用。
我错过了什么吗?
【问题讨论】:
-
还有其他栏目吗?如果是,应该如何处理?所有其他列都变成数字了吗?
-
@jezrael:只需在
str.replace中添加regex=True即可。但我需要根据需要转换日期字段,即YYYY-MM-DD格式。 -
But I need to convert the date fields as I wanted i.e. YYYY-MM-DD format.- 不确定现在理解是否不起作用? -
是的,它正在工作。只是为了我的理解,如果我做一个 pd.read_csv(file,parse_dates = date_cols),它会像你解释的那样做这项工作吗?我现在不关心
Value字段。 -
不幸的是,不仅需要自定义功能,请给我一个秒。