Учитывая файл со следующими столбцами:
date, userid, amount
где date
находится в формате yyyy-mm-dd. Я пытаюсь использовать python pandas для присвоения yyyy-mm-dd из нескольких лет в накопленные числа недель. Например:
2017-01-01 => 1
2017-12-31 => 52
2018-01-01 => 53
df_counts_dates=pd.read_csv("counts.csv")
print (df_counts_dates['date'].unique())
df = pd.to_datetime(df_counts_dates['date'])
print (df.unique())
print (df.dt.week.unique())
поскольку данные содержат даты августа 2017 года - август 2018 года, приведенные выше данные возвращаются
[33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 1 2 3 4 5
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
31 32]
Мне интересно, есть ли простой способ сделать первую дату "неделя 1" и сделать число недель накапливаться в течение нескольких лет, а не становиться 1 в начале каждого года?
Мне кажется, нужно немного другой подход - сначала вычесть все значения столбца, timedeltas конвертировать в days
, разделить пол на 7
и последний 1
для не начинать с 0
:
rng = pd.date_range('2017-08-01', periods=365)
df = pd.DataFrame({'date': rng, 'a': range(365)})
print (df.head())
date a
0 2017-08-01 0
1 2017-08-02 1
2 2017-08-03 2
3 2017-08-04 3
4 2017-08-05 4
w = ((df['date'] - df['date'].iloc[0]).dt.days // 7 + 1).unique()
print (w)
[ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
49 50 51 52 53]
pd.date_range(..., freq='W')
?