2017-01-12 2 views
1

Q1: У меня есть следующие панды dataframe:Панды DateTime день частота недели частота

enter image description here

с огромным количеством строк с ежедневной частотой (данных столбца). Я хотел бы преобразовать dataframe в неделю базы, что означает, что частота не является дневником, но теперь еженедельно. Также с этим деньги и рабочие являются «недельной суммой».

Q2: Можно ли определить начальный день (по дате) недели?

ответ

2

сначала убедитесь, что ваш столбец «Дата» имеет тип datetime.
Рассмотрим следующий пример:

tidx = pd.date_range('2012-01-01', periods=1000) 
df = pd.DataFrame(dict(
     Money=np.random.rand(len(tidx)) * 1000, 
     Workers=np.random.randint(1, 11, len(tidx)), 
     Date=tidx 
    )) 

Когда мы resample мы можем передать строку, которая представляет единицу времени, с помощью которого мы RESAMPLE. При использовании W в течение недель мы можем фактически пройти W-Mon через W-Sun. Так что если у вас есть дата

date=pd.to_datetime('2012-03-31') 

который был субботой, мы можем произвести единичную строку правильно передискретизации

'W-{:%a}'.format(date) 

'W-Sat' 

Тогда мы можем RESAMPLE вместе с ней

df.resample('W-{:%a}'.format(date), on='Date').sum().reset_index() 

enter image description here

Простой ответ: resample без него, который производит другая отправная точка.

df.resample('W', on='Date').sum().reset_index() 

enter image description here

Смежные вопросы