我有一个每周数据的python数据框架,如下所示:
Week Val
1 11
2 11
3 11
4 11
5 9
6 9
7 9
8 9我想创建一个这样的输出表:
Week 1 Week 2 Val
1 4 11
5 8 9抱歉,我对python和它的迭代工具还很陌生。我不知道如何解决这个问题。我尝试使用前面的行列进行匹配,但我不知道如何进一步:
df['Match'] = df['Val'].eq(df['Val'].shift(-1))发布于 2020-10-05 01:34:15
您希望按Val的连续块进行分组。因此,您可以对非零差分使用cumsum来获取块:
blocks = df['Val'].ne(df['Val'].shift(1)).cumsum()
(df.groupby(blocks, as_index=False)
.agg(Week1=('Week','min'), Week2=('Week','max'), Val=('Val', 'first'))
)或者你可以链接:
(df.groupby(df['Val'].ne(df['Val'].shift(1)).cumsum(), as_index=False)
.agg(Week1=('Week','min'), Week2=('Week','max'),Val=('Val', 'first'))
)输出:
Week1 Week2 Val
0 1 4 11
1 5 8 9https://stackoverflow.com/questions/64197711
复制相似问题