当前位置: 首页 > 面试题库 >

将所有日期更改为数据框中的标准日期时间

芮意
2023-03-14
问题内容

我有一个带有日期列的数据框,它看起来像这样。有多个日期列,例如结束日期,会计年度日期等。

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

我正在尝试编写一个函数,该函数基本上将那些整数更改为适当的日期格式,并将此列的格式设置为datetime [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;

现在回馈

ValueError: mixed datetimes and integers in passed array

我想这些数字不会转换为日期。但我不确定我还能如何调整我的代码。

任何想法?

亚当


问题答案:

参考如何将给定序数(从Excel)转换为日期,使用from_excel_ordinal-将序数值转换为datetime 。

m = df['Plan Start Date'].str.isdigit()

或者,如果您有一列对象-

df['Plan Start Date'].astype(str).str.isdigit()

接下来,应用功能上使用行的子集apply-

df.loc[m, 'Plan Start Date'] = \
df.loc[m, 'Plan Start Date']\
  .astype(int)\
  .apply(from_excel_ordinal)

最后,使用将整个列转换为datetime pd.to_datetime,得到统一的结果-

df['Plan Start Date'] = pd.to_datetime(df['Plan Start Date'], errors='coerce')



df

   Plan Start Date
0       2017-08-16
1       2017-05-31
2       2017-05-31
3       2017-05-31
4       2017-05-31
5       2016-04-21
6       2016-02-25
7       2016-12-15
8       2016-12-15
9       2016-12-15
10      2016-01-04
11      2016-01-04
12      2015-12-29
13      2015-12-29
14      2015-12-29
15      2015-12-29
16      2016-03-31
17      2016-03-31
18      2016-03-31
19      2016-03-31
20      2016-03-31
21      2017-01-24
22      2015-11-25


 类似资料:
  • 问题内容: 我有一个测试记录数据库,其中一列“ test_time”定义为日期时间。我想查询有多少不同的日期,因为我想根据日期将测试结果转储到csv中。我现在有以下内容: 但这给了我日期时间而不是日期的列表。当然,我可以在Python中转换它,但是当我使用sqlite时。我做到了。我无法提出sqlalchemy中的等效项。 问题答案: 那将通过使用表达式: 或快捷方式: 如果使用SQLite,请尝

  • 我使用了日期选择器,并将最大日期应用为2020年2月11日,而今天的日期是2019年2月12日。 我有一个问题,而改变年直接点击‘年’在日期选择器顶部。当日期选择器在当前日期(今天的日期:2019年2月12日)初始化时,如果我将年份更改为2020年2月12日,日期选择器将显示2020年2月12日作为标题,但在日历视图中选择的日期是选择的2月11日。 见以下图像::

  • 本文向大家介绍根据世界标准时间将一个月的日期设置为指定的日期?,包括了根据世界标准时间将一个月的日期设置为指定的日期?的使用技巧和注意事项,需要的朋友参考一下 JavaScript date setUTCDate()方法根据通用时间设置指定日期的月份。 以下是setUTCDate(dayValue)的参数- dayValue -1到31之间的整数,代表一个月中的一天。 示例 您可以尝试运行以下代码

  • 问题内容: 我有一个熊猫数据框,其中一列包含格式为日期的字符串 例如 目前该列的是。 如何将列值转换为Pandas日期格式? 问题答案: 使用类型

  • 本文向大家介绍python转化excel数字日期为标准日期操作,包括了python转化excel数字日期为标准日期操作的使用技巧和注意事项,需要的朋友参考一下 伙伴遇到一个关于excel导入数据到python中,日期变成数字而不是日期格式的问题。第一反应这个数字应该是excel里面的时间戳类似的,所以我就实验增加一天是不是对应的数字就加1。最后证明了我的想法,这样就可以倒推excel里面的数字日期

  • 标准c时间与日期函数 -> 详解 标准c时间与日期函数 asctime 语法: #include <time.h> char *asctime( const struct tm *ptr ); 功能: 函数将ptr所指向的时间结构转换成下列字符串: day month date hours:minutes:seconds year\n\0 例如: Mon Jun 26 12:03:53 2