【发布时间】:2020-10-02 04:32:10
【问题描述】:
我有一个具有多索引(股票和日期时间)的数据框,其中包含一个包含 1 和 0 的虚拟列,我想计算每只股票和每一天的每一行中 1 或 0 的次数发生在“虚拟”列中,每次从 1 开始,向上计数为 1,向下计数为 0 我在下面有一个示例,其中“计数器”列代表我想要创建的内容:
import pandas as pd
df = pd.DataFrame( {
'stock': ['AAPL', 'AAPL', 'AAPL','AAPL', 'AAPL','AAPL', 'AAPL', 'MSFT', 'MSFT'],
'datetime': ['2015-01-02 20:57', '2015-01-02 20:58', '2015-01-02 20:59', '2015-01-02 21:00','2015-01-03 20:57', '2015-01-03 20:58', '2015-01-03 20:59','2015-01-02 20:57', '2015-01-02 20:58'],
'Dummy': [0, 0, 1, 1, 1,1, 0, 1, 1],
'Counter': [-1, -2, 1, 2, 1, 2, 1, 1,2]})
df['datetime'] = pd.to_datetime(df['datetime'])
df.set_index(['stock', 'datetime'], inplace =True)
这里回答了这个问题的一个更简单的版本(但是这忽略了代码和日期)
Counting the number of consecutive occurences of numbers in dataframe
【问题讨论】:
标签: pandas dataframe pandas-groupby