将datetime.date转换为Python中的pandas.core.series.Series吗?

问题描述 投票:0回答:1

问题陈述:(多元线性回归),一家数字媒体公司(Netflix等)已经启动了一场演出。最初,该节目获得了良好的反响,但随后观众人数下降了。该公司想找出出了什么问题。

我想创建一个额外的列,即media ['days'],该列基本上记录了节目进行的总天数。假设演出的第一天是2017年3月1日,即2017-03-1。

我编写的代码如下。

media['Date'] = pd.to_datetime(media['Date'])

#deriving "days since the show started"
import datetime

d0 = date(2017, 2, 28)
d1 = media.Date             #media is a dataframe variable
delta = d1 - d0
media['Day'] = delta

我得到的错误是:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in 
      3 d0 = date(2017, 2, 28)
      4 d1 = media.Date             #media is a dataframe variable
----> 5 delta = d1 - d0
      6 media['Day'] = delta

c:\DEV\work\lib\site-packages\pandas\core\ops\__init__.py in wrapper(left, right)
    990             # test_dt64_series_add_intlike, which the index dispatching handles
    991             # specifically.
--> 992             result = dispatch_to_index_op(op, left, right, pd.DatetimeIndex)
    993             return construct_result(
    994                 left, result, index=left.index, name=res_name, dtype=result.dtype

c:\DEV\work\lib\site-packages\pandas\core\ops\__init__.py in dispatch_to_index_op(op, left, right, 
index_class)
628         left_idx = left_idx._shallow_copy(freq=None)
629     try:
--> 630         result = op(left_idx, right)
631     except NullFrequencyError:
632         # DatetimeIndex and TimedeltaIndex with freq == None raise ValueError

TypeError: unsupported operand type(s) for -: 'DatetimeIndex' and 'datetime.date'

我可以看到数据类型不匹配。d0的类型为:datetime.date&d1的类型为:pandas.core.series.Series

所以任何人都可以帮助我……如何将d0的值转换/解析为与d1的值完全相同。

python pandas linear-regression python-datetime
1个回答
0
投票

为了获得间隔,必须转换datetime.date。为此,您必须将d0包装在pd.to_datetime中。

即下面的方法应该可以工作,以天为单位给出增量,如果只需要整数部分,则可以在日期时间序列上使用dt访问器。

delta = d1 - pd.to_datetime(d0)
# or
delta = (d1 - pd.to_datetime(d0)).dt.days
© www.soinside.com 2019 - 2024. All rights reserved.