【问题标题】:For loop gets AttributeError: 'Series' object has no attribute 'days'For 循环获取 AttributeError:“系列”对象没有属性“天”
【发布时间】:2020-05-03 07:59:15
【问题描述】:

我正在使用 start_date 和 end_date 数据帧,但我的循环遇到了问题,返回以下错误:AttributeError: 'Series' object has no attribute 'days'

我尝试添加 .iterrows()、.dt.days、pandas.Series.iteritems 均未成功

# Function to get a list of all dates that are to be downloaded
def get_dates():
    df1 = pd.read_csv(r"C:\Users\14385\PycharmProjects\execvet_actrivist_db\short_seller_database.csv")
    raw_start_date = df1['Publication Date']
    start_date= pd.to_datetime(raw_start_date)
    ticker = df1['Ticker']
    end_date = start_date + timedelta(days=365)  # One year trailing calendar days acc. to IEX docu

    **dates = [start_date + timedelta(days=i) for i in range((end_date - start_date).days)] ##.dt.days Not working either**

我还尝试将系列转换为数据框( dates = [start_date + timedelta(days=i) for i in range((end_date.to_frame() - start_date.to_frame))])但失败了

感谢您的帮助!

【问题讨论】:

    标签: python pandas date types


    【解决方案1】:

    这里有一些更正,timedelta(days=365) 不会添加一整年,例如,如果明年是闰年。第二个start_dateend_date 应该是日期时间序列,减法是一个TimeDelta 对象,所以days 应该没问题:

    from pandas.tseries.offsets import DateOffset
    
    # ....
    
    start_date= pd.to_datetime(raw_start_date)
    end_date = start_date + DateOffset(years=1)
    dates = [start_date + DateOffset(days=i) \
        for i in (end_date - start_date).days]
    

    我知道dates 矩阵的用途,但假设dates 矩阵每天从开始到结束为开始中的每条记录生成,您可以使用daterange

    dates = [pd.date_range(start, start + DateOffset(years=1), freq='1D')\
            for start in start_date]
    

    【讨论】:

      猜你喜欢
      • 2017-12-12
      • 2019-01-15
      • 2020-11-11
      • 2019-04-22
      • 2019-07-26
      • 2020-04-04
      • 2019-09-16
      • 2018-05-25
      • 2019-07-07
      相关资源
      最近更新 更多