2016-12-30 6 views
1

Я разработчик Java, мне кажется, немного сложно переключиться на python и Pandas. Im пытается перебрать даты в панде Dataframe, который выглядит, как показано ниже,Итерации по датам в Pandas Dataframe, чтобы получить количество разных столбцов в неделю

sender_user_id created 
0 1     2016-12-19 07:36:07.816676 
1 33    2016-12-19 07:56:07.816676 
2 1     2016-12-19 08:14:07.816676 
3 15    2016-12-19 08:34:07.816676 

, что я пытаюсь получить это dataframe, который дает мне подсчет общего количества сделок, которые произошли за неделю. На форумах мне удалось получить синтаксис для «для циклов», который перебирает только индексы. В принципе мне нужен результирующий dataframe, который выглядит так. Поле value содержит счетчик sender_user_id, и дата должна быть изменена, чтобы показать начальную дату в неделю.

date   value 
0 2016-12-09 20 
1 2016-12-16 36 
2 2016-12-23 56 
3 2016-12-30 32 

Заранее благодарим за помощь.

ответ

1

Я думаю, что вам нужно resample по week и совокупным size:

#cast to datetime if necessary 
df.created = pd.to_datetime(df.created) 
print (df.resample('W', on='created').size().reset_index(name='value')) 
    created value 
0 2016-12-25  4 

Если нужен еще offsets:

df.created = pd.to_datetime(df.created) 
print (df.resample('W-FRI', on='created').size().reset_index(name='value')) 
    created value 
0 2016-12-23  4 

Если нужно количество уникальных значений в неделю агрегате по nunique:

df.created = pd.to_datetime(df.created) 
print (df.resample('W-FRI', on='created')['sender_user_id'].nunique() 
     .reset_index(name='value')) 
    created value 
0 2016-12-23  3 
+0

спасибо за помощь, но я получаю странную ошибку с resample. –

+0

TypeError: resample() получил неожиданный аргумент ключевого слова 'on' –

+0

Вы можете использовать 'df = df.set_index ('created')', а затем 'print (df.resample ('W'). Size(). Reset_index (name = 'value')) 'becasue argument' on' works if have [pandas 0.19.0] (http://pandas.pydata.org/pandas-docs/stable/whatsnew.html#other-enhancements) - проверьте свои версия с 'print (pd.show_versions())' – jezrael