python - 使用 for 循环向 pandas 中的所有日期列添加天数

标签 python pandas date

我有一个dataframe日期字符串,即 subset大的data frame .前5个rows这个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']})

我有declared一个variablenew_date='2020-06-29'

Define a variablediff_date这样diff_date=new_date-dates_df['date2'] 那么这个diff_date应添加到所有 date values在每个 date column这应该是我的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_df=datechange_func(dates_df,variablelist1,new_run_date,temp_run_date=None)

应该update dates_df['date2']获取 maximum unique valuedate2 column 的所有行中 但我收到这个错误 TypeError: invalid_op() got an unexpected keyword argument 'skipna' 如何纠正这个问题?

最佳答案

使用 pd.to_datetime 将类似日期的列转换为 pandas 日期时间系列,然后使用 DataFrame.add 沿 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

关于python - 使用 for 循环向 pandas 中的所有日期列添加天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63704427/

相关文章:

python - 如何替换 beautifulSoup 中的特定字符?

python - 分类模型 : How to check the score of each classification

python - 按行聚合列表中的列

java - 如何显示最后六个日期,java.util.Date?

python - 使用分而治之的方法找到列表中出现次数至少为 60% 的元素?

python - Emacs Python 模式语法高亮显示

python - 组织从 Excel 读取到 Pandas DataFrame 的数据

javascript - 如何从 JavaScript 中的日期数字获取星期几?

javascript - 仅获取昨天和明天的日期,而不获取当天的日期和时间

python - 对话流 : How to add parameter automatically when using the dialogflow python API