【问题标题】:How to add /subract fixed integer value to date field in Pandas如何在 Pandas 的日期字段中添加/减去固定整数值
【发布时间】:2020-05-02 21:23:16
【问题描述】:

我有一个这样的数据框

Data.head(3)

SD          ED          Buffer  
12/1/2020   16/1/2020   3      
31/12/2019  12/1/2020   6      
4/2/2020    15/2/2020   4     

            Data.Dtypes
SD          object
ED          object
Buffer      float64

我想创建两个新列:

Start_Buffer = SD + Buffer
Total_days =(ED-SD) + Buffer

预期输出

Start_Buffer     Total_Days
15/1/2020        7
6/1/2020         18
8/2/2020         15

如何使用 pandas 来做到这一点。

【问题讨论】:

    标签: python-3.x pandas numpy dataframe datetime


    【解决方案1】:

    试试这个:

    Data['ED'] = pd.to_datetime(Data.ED, dayfirst=True) #convert to datetime dtype
    Data['SD'] = pd.to_datetime(Data.SD, dayfirst=True) #convert to datetime dtype
    
    Buffer_days = pd.to_timedelta(Data.Buffer, unit='d')
    Data['Start_Buffer'] = Data.SD + Buffer_days 
    Data['Total_Days'] = (Data.ED - Data.SD + Buffer_days ).dt.days
    
    
    Out[48]:
              SD         ED  Buffer Start_Buffer  Total_Days
    0 2020-01-12 2020-01-16     3.0   2020-01-15           7
    1 2019-12-31 2020-01-12     6.0   2020-01-06          18
    2 2020-02-04 2020-02-15     4.0   2020-02-08          15
    

    【讨论】:

    • 现在出现错误ufunc subtract cannot use operands with types dtype('<m8[ns]') and dtype('O')
    • @pankaj:在这种情况下,您需要将SDED 都转换为datetime dtype。我编辑了答案。检查更新
    猜你喜欢
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 2011-08-17
    • 1970-01-01
    相关资源
    最近更新 更多