【发布时间】:2021-05-03 13:47:24
【问题描述】:
这里已经回答了这个问题的一个版本(但是它使用的是分钟频率的数据)。
Counting the number of consecutive occurences of numbers in dataframe with multi index
我有一个数据框,它有一个多索引(股票代码和日期),其中有一个包含 1 和 0 的虚拟列,我想计算每只股票的每一行中 1 或 0 出现的次数“虚拟”列,每次从 1 开始,向上计数为 1,向下计数为 0 我在下面有一个示例,其中“计数器”列代表我想要创建的内容:
df = pd.DataFrame( {
'stock': ['AAPL', 'AAPL', 'AAPL','AAPL', 'MSFT', 'MSFT','MSFT', 'MSFT'],
'datetime': ['2015-01-02', '2015-01-03', '2015-01-04', '2015-01-05', '2015-01-02', '2015-01-03', '2015-01-04', '2015-01-05'],
'Dummy': [0, 0, 1, 1, 1,1, 0, 1],
'Counter': [-1, -2, 1, 2, 1, 2, -1, 1]})
df['datetime'] = pd.to_datetime(df['datetime'])
df.set_index(['stock', 'datetime'], inplace =True)
【问题讨论】:
-
对于 MSFT - 2015-01-04 - 0(Dummy),Counter 应该是 1 还是 -1?
-
你说得对,应该是-1,我修好了。
-
@NiccolaTartaglia 你能解释一下为什么
2015-01-04上符号MSFT的Counter的值是-1,我认为这应该是1? -
这是因为 Dummy 为 0,所以它是 MSFT 之前为正之后的第一个 0。这就是为什么它应该是-1。
标签: pandas dataframe pandas-groupby