9

I have a data frame that contains 2 columns, one is Date and other is float number. I would like to add those 2 to get the following:

 Index Date Days NewDate 0 20-04-2016 5 25-04-2016 1 16-03-2015 3.7 20-03-2015 

As you can see if there is decimal it is converted as int as 3.1--> 4 (days). I have some weird questions so I appreciate any help. Thank you !

1

3 Answers 3

16

You can convert the Days column to timedelta and add it to Date column:

import pandas as pd df['NewDate'] = pd.to_datetime(df.Date) + pd.to_timedelta(pd.np.ceil(df.Days), unit="D") df 

enter image description here

Sign up to request clarification or add additional context in comments.

4 Comments

How would one create NewDate by adding Days to today's date? ie df['NewDate'] = ??date_of_today?? + pd.to_timedelta(pd.np.ceil(df.Days), unit="D")
cannot add DatetimeIndex and DatetimeIndex
Best one, for now on, use directly numpy and not from pandas pd.np.ceil(df.Days) --> np.ceil(df.Days)
Can it be done with business days? unit="B" doesn't seem to work.
15

First, ensure that the Date column is a datetime object:

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

Then, we can convert the Days column to int by ceiling it and the converting it to a pandas Timedelta:

temp = df['Days'].apply(np.ceil).apply(lambda x: pd.Timedelta(x, unit='D')) 

Datetime objects and timedeltas can be added:

df['NewDate'] = df['Date'] + temp 

3 Comments

How would one add on Days to todays date and create a NewDate?
Please open a new question. This is not directly related to the original question.
I posted a new question
0

using combine for two columns calculations and pd.DateOffset for adding days

df['NewDate'] = df['Date'].combine(df['Days'], lambda x,y: x + pd.DateOffset(days=int(np.ceil(y)))) 

output:

 Date Days NewDate 0 2016-04-20 5.0 2016-04-25 1 2016-03-16 3.7 2016-03-20 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.