【发布时间】:2018-09-02 15:46:47
【问题描述】:
我有一个包含以下时间序列数据的数据框 df:
a b sign
1 -0.066 19.514 -1
2 0.334 19.848 1
3 0.991 20.839 1
4 0.42 21.259 1
5 0.0 21.367 0
6 -0.57 20.797 -1
7 -0.294 20.503 -1
8 0.579 21.082 1
9 0.234 21.316 1
0 -0.954 20.362 -1
我目前正在使用以下累积分组魔法:
df2 = df.groupby((df["sign"] != df['sign'].shift()).cumsum(), as_index=False).agg({'sign': 'first', 'a': ['sum','count']})
产生以下输出(我调整了列标题):
sign asum cnt
0 -1.0 -0.209 1
1 1.0 1.970 3
2 0.0 0.000 1
3 -1.0 -0.813 2
4 1.0 0.755 2
5 -1.0 -1.015 1
到目前为止一切都很好,这很好地显示了正值和负值的运行。
但是,我不希望 0 符号作为单独的组,我希望它与 1 组或 -1 组相关联(取决于我的心情)。
那么最好的方法是什么?理想情况下,我需要输出是这样的(假设 0 组现在将成为 1 组的一部分):
sign a cnt
0 -1.0 -0.209 1
1 1.0 1.970 4
2 -1.0 -0.813 2
3 1.0 0.755 2
4 -1.0 -1.015 1
【问题讨论】:
-
好点!关于心情....假设我的心情目前是我的榜样,积极的。我希望我能从人们的建议中弄清楚如何自己将其转变为消极情绪。 :-) 但大脑导入可能是 v2。
标签: python pandas time-series pandas-groupby