【发布时间】:2019-10-15 21:02:32
【问题描述】:
当 val 等于 1 时,我想删除并计算列 val 中的重复项。
然后将start设置为第一行,end设置为最后一行连续重复。
df = pd.DataFrame()
df['start'] = [1, 2, 3, 4, 5, 6, 18, 30, 31]
df['end'] = [2, 3, 4, 5, 6, 18, 30, 31, 32]
df['val'] = [1 , 1, 1, 1, 1, 12, 12, 1, 1]
df
start end val
0 1 2 1
1 2 3 1
2 3 4 1
3 4 5 1
4 5 6 1
5 6 18 12
6 18 30 12
7 30 31 1
8 31 32 1
预期结果
start end val
0 1 6 5
1 6 18 12
2 18 30 12
3 30 32 2
我试过了。 df[~((df.val==1) & (df.val == df.val.shift(1)) & (df.val == df.val.shift(-1)))]
start end val
0 1 2 1
4 5 6 1
5 6 18 12
6 18 30 12
7 30 31 1
8 31 32 1
但我不知道如何完成我的预期结果,有什么建议吗?
【问题讨论】: