遍历 Pandas Dataframe 中的日期以获取每周不同列的计数
Iterate over dates in a Pandas Dataframe to get the count of a different column per week
我是一名 java 开发人员,发现切换到 python 和 Pandas 有点棘手。我正在尝试遍历 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
我想要得到的是一个数据框,它为我提供了每周发生的交易总数。从论坛我已经能够获得 'for loops' 的语法,它只迭代索引。基本上我需要一个看起来像这样的结果数据框。值字段包含 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
在此先感谢您的帮助。
我认为你需要 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
我是一名 java 开发人员,发现切换到 python 和 Pandas 有点棘手。我正在尝试遍历 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
我想要得到的是一个数据框,它为我提供了每周发生的交易总数。从论坛我已经能够获得 'for loops' 的语法,它只迭代索引。基本上我需要一个看起来像这样的结果数据框。值字段包含 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
在此先感谢您的帮助。
我认为你需要 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