numpy 在Python中按日期聚合具有给定条柱的数据

wr98u20j  于 2022-12-18  发布在  Python
关注(0)|答案(2)|浏览(104)

我有两个 Dataframe ,一个是给定日期的分数,

date   score
2022-12-01   0.28
2022-12-01   0.12
2022-12-01   0.36
2022-12-01   0.42
2022-12-01   0.33
2022-12-02   0.15
2022-12-03   0.23
2022-12-03   0.25

另一个日期框是得分箱,

breakpoints
0.1
0.2
0.3
0.4
0.5

断点0.1表示任何小于或等于0.1的值。如何创建一个 Dataframe ,按日期对具有此已知bin的数据进行分组?我尝试使用聚合函数工作良好的numpy.histogram,但不知道如何按日期对其进行分组。我的预期输出如下所示:

breakpoints   2022-12-01   2022-12-02   2022-12-03   ...
0.1            0            0            0
0.2            1            1            0
0.3            1            0            2
0.4            2            0            0
...           ...          ...          ...

but5z9lq

but5z9lq1#

可以使用panda.cut()函数按日期对数据进行绑定。
df['binned'] = pd.cut(df['score'], bins=breakpoints, include_lowest=True)
然后使用groupby函数按日期和仓位分组:
df.groupby(['date','binned']).count()
这将为您提供每个时间段中的得分数。

tp5buhyn

tp5buhyn2#

**step1)**为以下步骤创建新列:

import numpy as np
df['steps'] = np.round(np.floor((df.score)/0.1)*0.1, 1)

**step2)**执行group by并重命名聚合列:

out_df = (df[['date', 'steps']]).groupby(['date', 'steps']).size().reset_index().rename(columns={0:'count'})

**step3)**使用透视函数并替换None值:

out_df = out_df.pivot(index='steps', columns='date', values='count').reset_index().fillna(0)


最后的结果看起来像这样:

相关问题