python - 转换 pandas 数据框中的日期格式

标签 python pandas datetime dataframe format

我有一个数据框,并且“日期”列有两种不同类型的日期格式。

例如。 1983-11-10 00:00:00 和 10/11/1983

我希望它们都是相同的类型,如何迭代数据帧的日期列并将日期转换为一种格式?

最佳答案

我相信您需要 to_datetime 中的参数 dayfirst=True :

df = pd.DataFrame({'Date': {0: '1983-11-10 00:00:00', 1: '10/11/1983'}})
print (df)
                  Date
0  1983-11-10 00:00:00
1           10/11/1983


df['Date'] = pd.to_datetime(df.Date, dayfirst=True)
print (df)
        Date
0 1983-11-10
1 1983-11-10

因为:

df['Date'] = pd.to_datetime(df.Date)
print (df)
        Date
0 1983-11-10
1 1983-10-11
<小时/>

或者您可以指定两种格式,然后使用 combine_first :

d1 = pd.to_datetime(df.Date, format='%Y-%m-%d %H:%M:%S', errors='coerce')
d2 = pd.to_datetime(df.Date, format='%d/%m/%Y', errors='coerce')

df['Date'] = d1.combine_first(d2)
print (df)
        Date
0 1983-11-10
1 1983-11-10

多种格式的通用解决方案:

from functools import reduce 

def convert_formats_to_datetimes(col, formats):
    out = [pd.to_datetime(col, format=x, errors='coerce') for x in formats]
    return reduce(lambda l,r: pd.Series.combine_first(l,r), out)

formats = ['%Y-%m-%d %H:%M:%S', '%d/%m/%Y']
df['Date'] = df['Date'].pipe(convert_formats_to_datetimes, formats)
print (df)
        Date
0 1983-11-10
1 1983-11-10

关于python - 转换 pandas 数据框中的日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54344225/

相关文章:

python - 日期为 'unicode',我想知道有多少天

javascript - XMLHttpRequest 端点在签署 S3 请求时被阻止,因为没有 HTTPS,尽管一切都在 HTTPS 上

python-3.x - 如何将函数应用于每组数据框

Python Pandas : Group by one column and see the content of all columns?

mysql - SQL 连接具有相同列的表

python - 使用本地目录启动 dask 工作程序

python - 如果值具有 NaN,则在 pandas 中使用 bootstrap_plot 时出错

python - 有条件地选择数据框行的一部分

c - 不同日期时间字符串的相同mktime()结果

c# - 有没有更好的方法将 DateTime 修剪到特定精度?