我有一个包含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天)。 我有一些奇怪的问题,所以我感谢任何帮助。 谢谢!
答案 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
答案 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