将月份列添加到熊猫的日期列

时间:2020-07-13 22:35:05

标签: python pandas date timestamp multiple-columns

我想将一个月数的列添加到带有日期的列中。到目前为止,我已经尝试过(pd.DateOffset(months = plus_month_period)),但是“ months”不会接受一列,而只是一个数字。我最成功的尝试是:

dates = {'Date': ['24/04/2019','24/04/2019','2011/05/30'], 'Months':[2,12,100]}
df = pd.DataFrame(dates, columns = ['Date','Months'])

month_sum = pd.to_datetime(df['Date']).dt.to_period('m')
df['Add_month'] = ((month_sum + np.array(df['Months'])).dt.strftime('%Y/%m')).astype(str) + '/' + (pd.to_datetime(df['Date']).dt.day).astype(str)

print(pd.to_datetime(df['Add_month']))

结果是:

0   2019-06-24
1   2020-04-24
2   2023-11-30

此解决方案的我的问题是,在创建df ['Add_month']列时,我基本上是在末尾添加硬编码字符串,以尝试添加“天”部分,有时会导致计算不准确。是否有更直接的方法来添加“月份”列和“日期”列?

1 个答案:

答案 0 :(得分:0)

一个循环就足够了

import pandas as pd

dates = {'Date': ['24/04/2019','24/04/2019','2011/05/30'], 'Months':[2,12,150]}
df = pd.DataFrame(dates, columns = ['Date','Months'])
df['Add_month'] = pd.to_datetime(df['Date']).dt.date

months = [2,12,150]
j = 0
for i in df['Add_month']:
    print(i)
    print(i + pd.DateOffset(months=months[j]))
    j += 1