我有一个pd DataFrame列,其日期值采用不同的格式。例如“ YYYY-MM-DD hh:mm:ss”和“ DD.MM.YYYY”,甚至是“ DD.MM”。我想将它们全部转换为一种格式(例如'YYYY-MM-DD'),并尝试了(其中包括)
df[~df.date.str.contains('(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})')]
查找日期未写为“ YYYY-MM-DD hh:mm:ss”的行。但是,这不起作用。
因此,我检查了列的类型
df['date'].dtype #prints dtype('O')
然后我检查了
for index, row in df.iterrows():
print(type(row['date']))
并收到混合打印,例如'datetime.datetime'类和'str'类
我很困惑。当列是“对象”数据类型时,为什么不能总是得到“ str”?有人偶然知道如何使正则表达式起作用吗?
答案 0 :(得分:1)
def findIndex(x):
try:
pd.to_datetime(x).strftime('%m/%d/%Y')
return
except:
return True
df.date.apply(lambda x: findIndex(x))
现在,您可以使用 weird 格式获取所有索引。希望这会有所帮助。