我有一个Pandas数据框,其中一列包含格式为'YYYY-MM-DD'的日期字符串,例如'2013-10-28'.
目前,列的dtype是'object'.
如何将列值转换为Pandas日期格式?
我有一个值38142我需要使用python将其转换为日期格式.如果在excel中使用此数字并在此时右键单击并格式化单元格,则该值将转换为04/06/2004,并且我需要使用python获得相同的结果.我怎样才能做到这一点
我需要将日期转换为Excel序列号,以用于我正在编写的数据修改脚本.通过在我的OpenOffice Calc工作簿中播放日期,我能够推断出'1-Jan 1899 00:00:00'映射到数字零.
我编写了以下函数来将python datetime对象转换为Excel序列号:
def excel_date(date1):
temp=dt.datetime.strptime('18990101', '%Y%m%d')
delta=date1-temp
total_seconds = delta.days * 86400 + delta.seconds
return total_seconds
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试一些示例日期时,数字与我在Excel中格式化日期时所获得的数字不同(以及OpenOffice Calc).例如,测试'2009-03-20'在Python中给出3478032000,而excel将序列号呈现为39892.
上面的公式出了什么问题?
*注意:我使用的是Python 2.6.3,因此无法访问datetime.total_seconds()
我正在从excel读取数据并使用python操作数据.但是日期将以整数形式出现.如何将日期转换回日期格式?
2015年5月15日即将发布,电话为42139.00
我有一个带有日期列的数据框,它看起来像这样。有不止一个日期栏,例如结束日期、会计年度日期等。
Plan Start Date
8/16/2017 0:00
5/31/2017 0:00
5/31/2017 0:00
5/31/2017 0:00
5/31/2017 0:00
4/21/2016 0:00
2/25/2016 0:00
12/15/2016 0:00
12/15/2016 0:00
12/15/2016 0:00
42373
42373
42367
42367
42367
42367
42460
42460
42460
42460
42460
42759
42333
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个函数,它基本上将这些积分器更改为适当的日期格式,并将此列格式化为日期时间 [64]。此列格式是当前对象类型。
我写了下面的功能
def change_date_df(df):
format_dates_df = [col for col in df.columns if 'Date' in col];
for date in format_dates_df:
df[date] = pd.to_datetime(df[date]).apply(lambda x: x.strftime('%d-%m-%y')if not pd.isnull(x) else '');
return df;
Run Code Online (Sandbox Code Playgroud)
它现在回馈一个
ValueError: mixed datetimes and integers in passed array
Run Code Online (Sandbox Code Playgroud)
我猜这些数字没有被转换成日期。但我不知道我还能如何调整我的代码。
任何的想法?
亚当
我有一个数据框,其中的生日具有与 Excel 序列日期混合的常规日期,如下所示:
09/01/2020 12:00:00 AM
05/15/1985 12:00:00 AM
06/07/2013 12:00:00 AM
33233
26299
29428
Run Code Online (Sandbox Code Playgroud)
我尝试了此答案中的解决方案,所有 Excel 串行格式的日期都被清空,同时保留正常日期格式的日期。
这是我的代码:
import pandas as pd
import xlrd
import numpy as np
from numpy import *
from numpy.core import *
import os
import datetime
from datetime import datetime, timedelta
import glob
def from_excel_ordinal(ordinal, _epoch0=datetime(1899, 12, 31)):
if ordinal >= 60:
ordinal -= 1 # Excel leap year bug, 1900 is not a leap year!
return (_epoch0 + timedelta(days=ordinal)).replace(microsecond=0)
path = 'C:\\Input'
os.chdir(path) …Run Code Online (Sandbox Code Playgroud) 我将以下示例数据存储在 Excel 文件中
| 宣称 | 代码1 | 年龄 | 日期 |
|---|---|---|---|
| 7538 | 第359章 | 71 | 2019年11月28日 |
| 7538 | 第359章 | 71 | 2019年11月28日 |
| 540 | 第428章 | 73 | 2019年10月16日 |
| 540 | 第428章 | 73 | 2019年10月16日 |
| 605 | 1670 | 40 | 2019年4月12日 |
| 第740章 | 134 | 55 | 2019年12月24日 |
使用 pandas.read_excel API 导入到我的 Jupyter Notebook 时,日期字段的格式不正确:
excel = pd.read_excel('Libro.xlsx')
Run Code Online (Sandbox Code Playgroud)
然后我得到的日期字段有所不同,因为我在 Excel 文件中对其进行了格式化。我应该应用什么参数read_excel才能显示 Excel 文件中格式化的 DATE 列?
.info()方法,将列输出为 int64
我已经尝试过使用该pd.to_datetime函数,但得到了奇怪的结果:
在以下链接中找到我用于项目的示例 excel 文件sample_raw_data
以下是一些可用于重现从 Excel 读入的 DataFrame 的代码:
excel = pd.DataFrame({
'CLAIM': {0: 7538, 1: 7538, 2: 540, 3: 540, 4: 4605, 5: …Run Code Online (Sandbox Code Playgroud) python ×7
datetime ×4
excel ×4
pandas ×4
date ×3
data-munging ×1
dataframe ×1
python-2.7 ×1
xlrd ×1