在熊猫中添加天数

时间:2017-03-13 16:24:55

标签: python date pandas datetime numpy

我有一个包含2列的数据框,一个是Date,另一个是float number。 我想添加这些2来获得以下内容:

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

正如您所看到的,如果有小数,则将其转换为int为3.1 - > 4天)。 我有一些奇怪的问题,所以我感谢任何帮助。 谢谢!

3 个答案:

答案 0 :(得分:8)

首先,确保Date列是日期时间对象:

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

然后,我们可以通过上限将Days列转换为int并将其转换为pandas Timedelta:

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

可以添加日期时间对象和时间点:

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

答案 1 :(得分:6)

您可以将天数列转换为timedelta并将其添加到Date列:

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

答案 2 :(得分:0)

使用combine进行两列计算,使用pd.DateOffset添加days

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

输出:

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