【发布时间】:2021-01-15 05:23:14
【问题描述】:
问题
我有以下 Pandas 数据框:
data = {
'ID': [100, 100, 100, 100, 200, 200, 200, 200, 200, 300, 300, 300, 300, 300],
'value': [False, False, True, False, False, True, True, True, False, False, False, True, True, False],
}
df = pandas.DataFrame (data, columns = ['ID','value'])
我想获得以下组:
- 第 1 组:对于每个 ID,所有 False 行,直到该 ID 的第一个 True 行
- 第 2 组:对于每个 ID,该 ID 的最后一个 True 行之后的所有 False 行
- 第 3 组:所有真实行
这可以用 pandas 完成吗?
我尝试过的
我试过了
group = df.groupby((df['value'].shift() != df['value']).cumsum())
但这会返回错误的结果。
【问题讨论】:
-
- 第 1 组:对于每个 ID,所有 False 行,直到该 ID 的第一个 True 行。 - 第 2 组:对于每个 ID,该 ID 的最后一个 True 行之后的所有 False 行。 - 第 3 组:所有真实行。
-
你在
True之间有没有False?
标签: python pandas pandas-groupby