【问题标题】:Adding date to pd.to_datetime将日期添加到 pd.to_datetime
【发布时间】:2021-10-23 13:24:42
【问题描述】:

我正在寻找一种将自定义日期添加到 pd.to_datetime 的方法。所以,例如:

csv_file = str(datetime.now().strftime('%Y-%m-%d')) + '.csv'
csv_file2 = str((datetime.now() + timedelta(days=1)).strftime('%Y-%m-%d')) + '.csv'
data = pd.concat(map(pd.read_csv, [csv_file, csv_file2]))
data['time'] = pd.to_datetime(data['time'], errors='coerce')

打印:

4      2021-08-23 00:00:40
20     2021-08-23 00:02:54
36     2021-08-23 00:05:09
...        

pd.to_datetime 不断添加今天的日期,这在 csv_file 的情况下很好,但 csv_file2 需要包含明天的日期。

这是 csv 文件的示例:

piece,time
2259,12:03:50
2259,12:07:42
2259,12:34:05
2259,12:45:29

【问题讨论】:

    标签: python pandas csv datetime


    【解决方案1】:

    想法是创建辅助列file 用于区分tomorrow 并最后按条件添加1 day 以比较new 列:

    data = pd.concat(map(pd.read_csv, [csv_file, csv_file2]), keys=('today','tomorrow'))
    
    data = data.reset_index(level=1, drop=True).rename_axis('new').reset_index()
    
    d = pd.to_datetime(data['time'], errors='coerce')
    data['time'] = np.where(data['new'].eq('tomorrow'), d + pd.Timedelta(1, 'd'), d)
    

    或者:

    files = [csv_file, csv_file2]
    names = ('today','tomorrow')
    data= pd.concat([pd.read_csv(f).assign(new=name) for f, name in zip(files, names)])
    d = pd.to_datetime(data['time'], errors='coerce')
    data['time'] = np.where(data['new'].eq('tomorrow'), d + pd.Timedelta(1, 'd'), d)
    

    【讨论】:

      猜你喜欢
      • 2022-01-14
      • 2023-03-08
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 2015-12-31
      • 2010-11-28
      相关资源
      最近更新 更多