python - Pandas :根据一列中字符串的特定组合选择行对

标签 python pandas dataframe numpy

我是 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/

相关文章:

python - 在内存脚本上使用 2to3

python - Pandas :替换字典中的完整匹配字符串

r - 使用一个数据框中的引用来修复另一个数据框中的文本进行拼写校正 (r)

python - 如何在同一列中用组的最小值填充 NaN 值

python - 根据时间戳中存在的两列中的元素分隔行

python - 替换字符串列表中的子字符串

python - 我如何告诉 PyCharm 参数应该是什么类型?

python - python-mode、ipython、(ipython.el) 版本/发行版和 init.el/.emacs.d 代码的组合如何工作?

python - Pandas :按日期分组并为每个日期找到最小的 n

Python 计算特定列的相同值