【问题标题】:Sum datetime64[ns] Column and float64 Column和 datetime64[ns] 列和 float64 列
【发布时间】:2021-11-12 16:17:54
【问题描述】:

我正在尝试对两列求和:一列是格式 float64,它是秒,另一列是格式 datetime64[ns]。它们看起来像:

 time                  | float
---------------------------------
 2020-07-28 14:53:10   | 5.0
 2021-08-30 15:28:52   | 68.0
 2019-04-25 14:55:36   | 49.0
 2020-03-24 09:19:45   | 8.0
 2021-02-10 07:44:26   | 6.0

我执行的总和如下:

df['time'] + df['float']

然后我收到以下消息:

ufunc 'add' 不能使用类型为 dtype('

我尝试将浮点列转换为时间日期,然后执行求和,我收到以下消息:

+ 不支持的操作数类型:'Timestamp' 和 'Timestamp'`

【问题讨论】:

  • 你想添加什么?浮点数列是秒、天、年吗?
  • 听起来像你想要的Timedelta

标签: python time sum


【解决方案1】:

使用pd.to_timedelta 将“float”列转换为pd.Timedelta,然后使用sum

df["time"] = pd.to_datetime(df["time"])
df["float"] = pd.to_timedelta(df["float"], unit="D") #change units if needed

>>> df.sum(axis=1)
0   2020-08-02 14:53:10
1   2021-11-06 15:28:52
2   2019-06-13 14:55:36
3   2020-04-01 09:19:45
4   2021-02-16 07:44:26
dtype: datetime64[ns]

【讨论】:

    【解决方案2】:

    使用pandas.Timedelta,根据需要更改单位。

    df.float = df.float.apply(functools.partial(pd.Timedelta, unit='seconds'))
    

    【讨论】:

      猜你喜欢
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 2019-01-20
      • 2020-10-27
      相关资源
      最近更新 更多