【问题标题】:adding datime.datetime and datetime.time添加 datetime.datetime 和 datetime.time
【发布时间】:2017-08-21 20:56:07
【问题描述】:

我正在尝试添加 datetime.datetime 和 datetime.time 以获得一列。我正在尝试结合:

import datetime as dt
dt.datetime.combine(myDF['Date'].astype(dt.date), myDF['Time'].astype(dt.time))

但我明白了:

TypeError: combine() argument 1 must be datetime.date, not Series

我正在尝试这个:

myDF['Date'] + myDF['Time']

但我明白了

TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.time'

有人知道,我可以如何组合我的两个列吗?

             Date               Time
0    2011-08-08 00:00:00      08:10:00
1    2011-08-08 00:00:00      08:10:00
2    2011-08-08 00:00:00      08:10:00
3    2011-08-08 00:00:00      11:20:00
4    2011-08-08 00:00:00      12:25:00
5    2011-08-08 00:00:00      14:20:00

【问题讨论】:

  • 您的某些示例不太合理。我认为您需要展示您的进口商品。
  • 哦,对不起。我将日期时间导入为 dt。你是这个意思吗?
  • 是的,现在更有意义了。
  • 为什么会打电话给astype()?您的 + 错误表明您的行中已经有 datetime.datetimedatetime.time 对象。
  • 我只是想确保所有行都具有相同的格式。还有比我在这里展示的更多。你说的对。我什至可能不需要那个

标签: python python-3.x pandas datetime


【解决方案1】:

您正在尝试合并整个列,但datetime.combine() 不知道如何应用于单独的列。

请改用DataFrame.apply() method

def combine_cols(row):
    return dt.datetime.combine(
        row['Date'].date(), row['Time'])

myDF.apply(combine_cols, axis=1)

axis=1 告诉apply() 将每一行传递给可调用对象。

演示:

>>> import pandas as pd
>>> import datetime as dt
>>> myDF = pd.DataFrame({
...     'Date': pd.Series([dt.datetime(2011, 8, 8)] * 6),
...     'Time': pd.Series([dt.time(8, 10), dt.time(8, 10), dt.time(8, 10), dt.time(11, 20), dt.time(12, 25), dt.time(14, 20)])
... })
>>> myDF
        Date      Time
0 2011-08-08  08:10:00
1 2011-08-08  08:10:00
2 2011-08-08  08:10:00
3 2011-08-08  11:20:00
4 2011-08-08  12:25:00
5 2011-08-08  14:20:00
>>> def combine_cols(row):
...     return dt.datetime.combine(
...         row['Date'].date(), row['Time'])
...
>>> myDF.apply(combine_cols, axis=1)
0   2011-08-08 08:10:00
1   2011-08-08 08:10:00
2   2011-08-08 08:10:00
3   2011-08-08 11:20:00
4   2011-08-08 12:25:00
5   2011-08-08 14:20:00
dtype: datetime64[ns]

【讨论】:

    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多