Python 使用for循环向所有日期列添加日期

Python 使用for循环向所有日期列添加日期,python,pandas,date,Python,Pandas,Date,我有一个日期字符串的dataframe,它是大dataframe的子集 dates_df = pd.DataFrame( {'date1':['2020-06-16','2020-06-16','2020-06-17','2020-06-21','2020-06-11'], 'date2':['2020-06-10','2020-06-10','2020-06-10','2020-06-10','2020-06-10'], 'date3':['2018-12-20',

我有一个日期字符串的
dataframe
,它是大
dataframe
子集

dates_df = pd.DataFrame(
    {'date1':['2020-06-16','2020-06-16','2020-06-17','2020-06-21','2020-06-11'],
     'date2':['2020-06-10','2020-06-10','2020-06-10','2020-06-10','2020-06-10'],
     'date3':['2018-12-20','2018-12-19','2019-09-20','2019-05-08','2020-06-13'],
     'date4':['2020-07-07','2020-06-30','2020-07-01','2020-07-03','2020-07-24']})
我已经声明了一个名为
new\u date='2020-06-29'

定义一个名为
diff_date
的变量,以便
diff_date=new_date-dates\u df['date2']
然后该
diff_date
应添加到每个
date列中的所有
date值中,该列应为我的
final_df
。 到目前为止,我采取的步骤是将这些值转换为
pd.to_datetime()
,并得到了差异。根据给出的答案获得最终df。 ############################ 稍微修改了上面的数据帧,并编写了一个类似这样的函数

dates_df=pd.DataFrame(
 {'date1':['2020-06-16','2020-06-16','2020-06-17','2020-06-21','2020-06-    
 11'],'date2':['2020-06-10','2020-08-10','2020-06-10','2020-09-13','2020-06- 
 10'],'date3':['2018-12-20','2018-12-19','2019-09-20','2019-05-08','2020-06- 
 13'],'date4':['2020-07-07','2020-06-30','2020-07-01','2020-07-03','2020-07- 
 24']}) 

def datechange_func(dataset,variablelist,new_run_date,temp_run_date=None):
   dataset[variablelist]=dataset[variablelist].apply(pd.to_datetime)
   li= list(dataset['date2'].unique())
   if dataset.loc[dataset['date2'].any().isin(li)]:
       dataset['date2'] = max(li)
   else:
       dataset['date2'] = temp_run_date

   diff = new_run_date - dataset['date2']

   dataset[variablelist]=dataset[variablelist].add(diff,axis=0)

   return dataset
variablelist1=['date1','date2','date3','date4']
final\u df=datechange\u func(日期、变量列表1、新运行日期、临时运行日期=None)

它应该
updatedates\u df['date2']
以在
date2列的所有行中获得
最大唯一值
但是我得到了这个错误
TypeError:invalid_op()获取了意外的关键字参数“skipna”

如何纠正此问题?

使用
pd。要将类似日期的列转换为日期时间序列,请使用
DataFrame。沿
axis=0添加
diff

dates_df = dates_df.apply(pd.to_datetime)
diff = pd.Timestamp('2020-06-29') - dates_df['date2']
final_df = dates_df.add(diff, axis=0)
结果:

print(final_df)
      date1      date2      date3      date4
0 2020-07-05 2020-06-29 2019-01-08 2020-07-26
1 2020-07-05 2020-06-29 2019-01-07 2020-07-19
2 2020-07-06 2020-06-29 2019-10-09 2020-07-20
3 2020-07-10 2020-06-29 2019-05-27 2020-07-22
4 2020-06-30 2020-06-29 2020-07-02 2020-08-12

@Shubham Sharma
你的答案很有用。我修改了上述问题,编写了一个函数来更新dates_df['date2']列
,使所有
date2列值中的
最大唯一值
,但我得到了错误。你能帮我做点什么吗this@ruby让我们讨论一下