【问题标题】:How to add 8 months to a column in Python [duplicate]如何在 Python 中为一列添加 8 个月 [重复]
【发布时间】:2021-06-24 15:39:38
【问题描述】:

我在数据框中有一列“CropYear”,我想将 8 个月添加到该列(即该列中的每个日期时间值 8 个月)。然后我想从“DateListed”列中减去该列。我可以自己完成其中任何一件事情,但我一生都无法弄清楚如何在不破坏代码的情况下同时完成这两件事。

df2["CropYear"] = pd.to_datetime(df2['CropYear'], format="%Y",  errors='coerce')

eight_mon_rel = relativedelta(months=8)

df2["CropYear"] = df2["CropYear"] + eight_mon_rel

HA = df2.DateListed - df2.CropYear

这是数据框的屏幕截图以供参考: df2

就目前而言,我从这段代码得到的结果是

TypeError: unsupported operand type(s) for +: 'DatetimeArray' and 'relativedelta'

【问题讨论】:

标签: python datetime


【解决方案1】:

我是新手,如果我误解了您的问题,我深表歉意,但这可能是您想要做的吗?

import datetime as dt
import pandas as pd
from pandas.core.frame import DataFrame
from pandas.tseries.offsets import DateOffset

#reading in your example data
original_data = pd.read_excel('Data_Example_Original.xlsx', sheet_name='Sheet1')

working_df = DataFrame(original_data)

add_time = list(working_df['CropYear'] + DateOffset(months=8))

working_df['AdjCropYear'] = add_time
working_df['DaysBetween'] = (working_df['DateListed'] - working_df['AdjCropYear']).dt.days
working_df.to_excel('results.xlsx')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多