我正在尝试将 timedelta 转换为整数。但我收到错误。我不知道如何解决这个问题。有谁知道吗。
time = (pd.to_datetime(each_date2)-pd.to_datetime(each_date1))
pd.to_numeric(time, downcast='integer')
时间具有以下值:
Timedelta('7 days 00:00:00')
我在第二行收到以下错误:
TypeError: Invalid object type at position 0
任何帮助将不胜感激。提前致谢。
以下是将 Pandas 数据框中的
timedelta
列转换为整数(以秒、分钟、小时或天为单位)的方法:
了解错误
出现错误是因为
pd.to_numeric
旨在处理数值数组或标量,而不是
Timedelta
对象的 Series。
解决方案
可以使用
.dt
属性访问
Timedelta
对象的属性,并从那里转换为所需的单位:
import pandas as pd
# 示例数据
time = pd.to_timedelta(['7 days 00:00:00'])
# 转换为秒
time_in_seconds = time.dt.total_seconds().astype(int)
# time_in_seconds 现在包含 [604800]
# 转换为分钟
time_in_minutes = (time.dt.total_seconds() / 60).astype(int)
# 转换为小时
time_in_hours = (time.dt.total_seconds() / 3600).astype(int)
# 转换为天
time_in_days = time.dt.days.astype(int)
# time_in_days 现在包含 [7]
说明
-
访问
.dt
属性:Timedelta
对象存储在Series
中。.dt
属性允许访问时间增量值的不同属性。 -
选择单位:
-
dt.total_seconds()
: 以秒为单位返回持续时间。 -
dt.days
: 以天为单位返回持续时间。 -
对于分钟或小时,将
total_seconds()
除以适当的因子。 -
转换为整数: 使用
astype(int)
将结果转换为整数类型。
将此应用于的代码
将此应用于的代码示例,应该执行以下操作:
time = (pd.to_datetime(each_date2)-pd.to_datetime(each_date1))
time_in_days = time.dt.days.astype(int)
这会将
Timedelta
对象列表转换为表示天数的整数列表。