User Tools

Site Tools


add_dates

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
add_dates [2020/12/03 19:02] – [without pandas; single date] rajuadd_dates [2020/12/03 19:03] raju
Line 1: Line 1:
 === Add dates === === Add dates ===
 +
 +==== single start date; multiple offsets; with pandas ====
 +prepare the input
 +<code>
 +In [1]:
 +start_yyyymmdd = '20201203'
 +fmt = '%Y%m%d'
 +from datetime import datetime
 +start_date = datetime.strptime(start_yyyymmdd, fmt)
 +
 +In [2]:
 +print(start_date)
 +2020-12-03 00:00:00
 +
 +In [3]:
 +import pandas as pd
 +days_original = [158, 928, 882, 341, 596, 878, 526]
 +offset_years = [round(x/365.0, 9) for x in days_original]
 +df = pd.DataFrame({'offset_years': offset_years})
 +
 +In [4]:
 +print(df)
 +   offset_years
 +0      0.432877
 +1      2.542466
 +2      2.416438
 +3      0.934247
 +4      1.632877
 +5      2.405479
 +6      1.441096
 +</code>
 +Convert the offset to days
 +<code>
 +In [5]:
 +import numpy as np
 +df['offset_days'] = (df['offset_years']*365.0).round().astype(np.int)
 +df
 +Out[5]:
 +   offset_years  offset_days
 +0      0.432877          158
 +1      2.542466          928
 +2      2.416438          882
 +3      0.934247          341
 +4      1.632877          596
 +5      2.405479          878
 +6      1.441096          526
 +</code>
 +Apply the offset to get end dates
 +<code>
 +In [6]:
 +df['end_yyyymmdd'] = (start_date + pd.to_timedelta(df['offset_days'], 'd')).dt.strftime(fmt)
 +df
 +Out[6]:
 +   offset_years  offset_days end_yyyymmdd
 +0      0.432877          158     20210510
 +1      2.542466          928     20230619
 +2      2.416438          882     20230504
 +3      0.934247          341     20211109
 +4      1.632877          596     20220722
 +5      2.405479          878     20230430
 +6      1.441096          526     20220513
 +</code>
 +
 +I used Python 3.8.5, ipython 7.18.1, pandas 1.1.3, numpy 1.19.2
 +
 ==== multiple dates; different offsets; with pandas ==== ==== multiple dates; different offsets; with pandas ====
 Given Given
Line 114: Line 179:
 </code> </code>
  
-==== single start date; multiple offsets; with pandas ==== 
-prepare the input 
-<code> 
-In [1]: 
-start_yyyymmdd = '20201203' 
-fmt = '%Y%m%d' 
-from datetime import datetime 
-start_date = datetime.strptime(start_yyyymmdd, fmt) 
- 
-In [2]: 
-print(start_date) 
-2020-12-03 00:00:00 
- 
-In [3]: 
-import pandas as pd 
-days_original = [158, 928, 882, 341, 596, 878, 526] 
-offset_years = [round(x/365.0, 9) for x in days_original] 
-df = pd.DataFrame({'offset_years': offset_years}) 
- 
-In [4]: 
-print(df) 
-   offset_years 
-0      0.432877 
-1      2.542466 
-2      2.416438 
-3      0.934247 
-4      1.632877 
-5      2.405479 
-6      1.441096 
-</code> 
-Convert the offset to days 
-<code> 
-In [5]: 
-import numpy as np 
-df['offset_days'] = (df['offset_years']*365.0).round().astype(np.int) 
-df 
-Out[5]: 
-   offset_years  offset_days 
-0      0.432877          158 
-1      2.542466          928 
-2      2.416438          882 
-3      0.934247          341 
-4      1.632877          596 
-5      2.405479          878 
-6      1.441096          526 
-</code> 
-Apply the offset to get end dates 
-<code> 
-In [6]: 
-df['end_yyyymmdd'] = (start_date + pd.to_timedelta(df['offset_days'], 'd')).dt.strftime(fmt) 
-df 
-Out[6]: 
-   offset_years  offset_days end_yyyymmdd 
-0      0.432877          158     20210510 
-1      2.542466          928     20230619 
-2      2.416438          882     20230504 
-3      0.934247          341     20211109 
-4      1.632877          596     20220722 
-5      2.405479          878     20230430 
-6      1.441096          526     20220513 
-</code> 
- 
-I used Python 3.8.5, ipython 7.18.1, pandas 1.1.3, numpy 1.19.2 
add_dates.txt · Last modified: 2021/01/13 14:41 by raju