我是 python/pandas 的新手,一直在努力寻找一个足够具体的例子来让我使用。
假设我有以下 pandas 数据框,由一列事件标记和一列显示每个标记出现的时间组成:
df = pd.DataFrame({'Marker': ['S200', 'S4', 'S44', 'Tone', 'S200', 'S1', 'S44', 'Tone'],
'Time': [0, 100, 150, 230, 300, 340, 380, 400]})
Marker Time
0 S200 0
1 S4 100
2 S44 150
3 Tone 230
4 S200 300
5 S1 340
6 S44 380
7 Tone 400
我想提取 S44 后跟一个音调的行对。结果输出应该是:
newdf = pd.DataFrame({'Marker': ['S44', 'Tone', 'S44', 'Tone'],
'Time': [150, 230, 380, 400]})
Marker Time
0 S44 150
1 Tone 230
2 S44 380
3 Tone 400
如有任何想法,我们将不胜感激!
最佳答案
一种方法是使用 shift 获取索引,加 1 并使用 loc 拉取 - 请注意,这假定索引是数字且单调递增:
index = df.loc[df.Marker.shift(-1).eq('Tone') & (df.Marker.eq('S44'))].index
df.loc[index.union(index +1)]
Marker Time
2 S44 150
3 Tone 230
6 S44 380
7 Tone 400
关于python - Pandas :根据一列中字符串的特定组合选择行对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68319727/