Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将多个格式日期转换为一个格式日期_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 将多个格式日期转换为一个格式日期

Python 将多个格式日期转换为一个格式日期,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我在df中有一个日期列,它需要对齐格式 该列目前有多种格式,如20201203、05/06/2022019-09-15 00:00:1568480400。 我的预期结果必须是YYYY-MM-DD格式,我以前尝试过pd.to_datetime(df,format='%Y-%m-%d'),但随后收到2个错误05/06/20与指定的格式不匹配,并且秒必须是0..59 我假设会有一些初始代码来预处理数据,这是真的吗。或者是否有适当的功能?请帮忙 非常感谢大家。输入 from dateutil.parse

我在df中有一个日期列,它需要对齐格式

该列目前有多种格式,如20201203、05/06/2022019-09-15 00:00:1568480400。 我的预期结果必须是YYYY-MM-DD格式,我以前尝试过
pd.to_datetime(df,format='%Y-%m-%d')
,但随后收到2个错误
05/06/20与指定的格式不匹配
,并且
秒必须是0..59

我假设会有一些初始代码来预处理数据,这是真的吗。或者是否有适当的功能?请帮忙

非常感谢大家。

输入

from dateutil.parser import parse
df=pd.DataFrame({
    'Date':['20201203', '05/06/20', '2019-09-15 00:00:1568480400']
})
df.Date = df.Date.str.split(' ',1).str[0] ## If `'2019-09-15 00:00:1568480400'` is a valid date in your df.


df["Date"] = pd.to_datetime(df["Date"]).dt.strftime("%Y-%m-%d")
    Date
0   2020-12-03
1   2020-05-06
2   2019-09-15
两个选项

首先

from dateutil.parser import parse
df=pd.DataFrame({
    'Date':['20201203', '05/06/20', '2019-09-15 00:00:1568480400']
})
df.Date = df.Date.str.split(' ',1).str[0] ## If `'2019-09-15 00:00:1568480400'` is a valid date in your df.


df["Date"] = pd.to_datetime(df["Date"]).dt.strftime("%Y-%m-%d")
    Date
0   2020-12-03
1   2020-05-06
2   2019-09-15

for i in range(len(df['Date'])):
    df['Date'][i] = parse(df['Date'][i])
df['Date'] = pd.to_datetime(df['Date']).dt.strftime("%Y-%m-%d")
df
输出

from dateutil.parser import parse
df=pd.DataFrame({
    'Date':['20201203', '05/06/20', '2019-09-15 00:00:1568480400']
})
df.Date = df.Date.str.split(' ',1).str[0] ## If `'2019-09-15 00:00:1568480400'` is a valid date in your df.


df["Date"] = pd.to_datetime(df["Date"]).dt.strftime("%Y-%m-%d")
    Date
0   2020-12-03
1   2020-05-06
2   2019-09-15

使用
不带
格式
参数的datetime
函数。让我们推断日期时间格式:

df=pd.DataFrame({“日期”:[“20201203”、“05/06/20”、“2019-09-15 00:00:00.156848400”])
df[“date”]=pd.to_datetime(df[“date”]).dt.strftime(“%Y-%m-%d”)
>>df
日期
0  2020-12-03
1  2020-05-06
2  2019-09-15
检查您的输入数据
2019-09-15 00:00:156848400
无效:

parserror:second必须在0..59:2019-09-15 00:00:1568480400中

第三个元素不是
2019-09-15 00:00:00.156848400
,而是
2019-09-15 00:00:156848400
更新了
2019-09-15 00:00:156848400
的答案。因为我们不需要时间域,所以我们可以删除它。看起来这个答案和我的答案完全一样。对不起,我没有看到你的第二次编辑…nw,两个人可以用类似的方式思考:)非常感谢Corrarien和@Uts提供的答案;)我用“2019-09-15 00:00:00.1568480400”成功地执行了代码,但我的df确实有这种格式“2018-07-03 00:00:1530550800”(不是一行而是许多行:()。有什么办法可以帮助这一点吗?衷心感谢^^^已经在@Uts answer
第一选项中为其添加了答案
--使用这个--
df.Date=df.Date.str.split('',1).str[0]##如果
2019-09-15 00:00:1568480400`是您的df中的有效日期,`然后
df[“date”]=pd.to_datetime(df[“date”]).dt strftime(“%Y-%m-%d”)