gpt4 book ai didi

python - 如何计算滚动窗口中数据框的列中相同实例的数量

转载 作者:行者123 更新时间:2023-11-30 08:59:23 24 4
gpt4 key购买 nike

我正在尝试计算此数据的每个滑动窗口内相同 ID 的数量:

                           ID  
DATE
2017-05-17 15:49:51 s_2
2017-05-17 15:49:52 s_5
2017-05-17 15:49:55 s_2
2017-05-17 15:49:56 s_3
2017-05-17 15:49:58 s_5
2017-05-17 15:49:59 s_5

我正在尝试计算大小为 3 的滚动窗口内相互重叠的相同 ID 的数量。答案应该是这样的:

DATE                    ID      s_2_count    s_3_count   s_5_count       
2017-05-17 15:49:51 s_2 2 0 1
2017-05-17 15:49:52 s_5 1 1 1
2017-05-17 15:49:55 s_2 1 1 1
2017-05-17 15:49:56 s_3 0 1 2
2017-05-17 15:49:58 s_5 NaN NaN NaN
2017-05-17 15:49:59 s_5 NaN NaN NaN

最佳答案

使用str.get_dummiesrollingsumshiftadd_prefix >:

df.ID.str.get_dummies().rolling(3).sum().shift(-2).add_suffix('_count')

输出:

                     s_2_count  s_3_count  s_5_count
DATE
2017-05-17 15:49:51 2.0 0.0 1.0
2017-05-17 15:49:52 1.0 1.0 1.0
2017-05-17 15:49:55 1.0 1.0 1.0
2017-05-17 15:49:56 0.0 1.0 2.0
2017-05-17 15:49:58 NaN NaN NaN
2017-05-17 15:49:59 NaN NaN NaN

让我们将其分配回数据框:

df.assign(**df.ID.str.get_dummies().rolling(3).sum().shift(-2).add_suffix('_count'))

或使用连接

df.join(df.ID.str.get_dummies().rolling(3).sum().shift(-2).add_suffix('_count'))

输出:

                      ID  s_2_count  s_3_count  s_5_count
DATE
2017-05-17 15:49:51 s_2 2.0 0.0 1.0
2017-05-17 15:49:52 s_5 1.0 1.0 1.0
2017-05-17 15:49:55 s_2 1.0 1.0 1.0
2017-05-17 15:49:56 s_3 0.0 1.0 2.0
2017-05-17 15:49:58 s_5 NaN NaN NaN
2017-05-17 15:49:59 s_5 NaN NaN NaN

使用 pd.crosstab 的选项 2

df.assign(**pd.crosstab(df.index,df.ID).rolling(3).sum().shift(-2))

或者使用连接

df.join(pd.crosstab(df.index,df.ID).rolling(3).sum().shift(-2))

关于python - 如何计算滚动窗口中数据框的列中相同实例的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46163691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com