python - 识别 Pandas 中的非连续行

标签 python pandas

我有以下 Excel 电子表格:

<表类=“s-表”> <标题> 代码 ID <正文> ABC 1 ABC 2 BCD 1 ABC 4 CDE 1 CDE 2 BCD 5

我需要识别并创建每个代码的列表,其中有一个不直接遵循原始序列的 ID(在本例中,ABC 是由于 ABC4,BCD 是由于 BCD5),无论它在表中的位置如何谎言。初始 ID 将按顺序排列。当代码更新时(在该表之外的某个地方),该表将生成一个新行,从而产生一个不连续的 ID 号。

这是我迄今为止所做的头脑 Storm :

  • 我创建了一个字典,并使用表中的每个 CODE 作为键,使用每个 ID 的列表作为其值。
  • 创建某种 IF 语句来检查第一个值 + 1 是否等于第二个值。如果为 false,则将代码保存在新列表中。

我的思维过程是否走在正确的轨道上?我仍在努力确定 If/Else、While 和 For 循环何时最合适。提前谢谢大家。

最佳答案

让我们尝试 groupby + filter ,请注意,因为您使用 pandas 尝试不使用 for 循环

out = df.groupby('CODE').filter(lambda x : x['ID'].diff().dropna().ne(1).any())['CODE'].unique()
Out[239]: array(['ABC', 'BCD'], dtype=object)

关于python - 识别 Pandas 中的非连续行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69137900/

相关文章:

python - Python类和错误

python - 在类的类方法中调用 super() 以获取元类方法

python - 如果值在列表 pandas 中,则 bool 向量

python - 当 pandas 数据帧到临时文件 csv 时权限被拒绝

python - 如何对同一文本样本的不同主题/方面进行情感分析

python - 石头剪刀布不打印结果

python - 用python解压目录结构

python - 使用更新的索引将 python pandas 数据框的最后一行复制并添加到自身

python - 在正向填充 (ffill) 值时对 Pandas 数据帧进行重采样

python - 使用 pandas datareader 时出现 Keyerror 'Date'