python - 如何过滤包含相似模式的行

标签 python pandas dataframe

我在 Pandas 中有这个数据框:

               Value    Date
ISIN        
TRT010213A15    10    2019-11-15
TRT010213T23    100   2019-11-15
TRT010213T23    70    2019-12-20
TRT080328T15    150   2018-10-12
TRT080420T12    175   2018-05-11
TRT150120T16    150   2019-08-29
TRT150120A05    15    2019-11-18
TRT150120T16    300   2019-10-15
TRT150120T16    275   2019-11-18

如果索引(“ISIN”)的前9个字符和“日期”列中的值相同,如何获得“值”列之间的差异(减法)。减法将在第 10 个字符为“T”和第 10 个字符为“A”的索引之间进行。

例如第一个和第二个索引的前 9 个字符是“TR010213”,“日期”值为“2019-11-15”。在这种情况下,第二行的“值”的新值(因为索引的第 10 个字符是“T”)应该是 90(100-10),而第一行的“值”(索引的第 10 个字符是“A”)不会被改变。

我想得到这个数据框:
                Value   Date
ISIN        
TRT010213A15    10  2019-11-15
TRT010213T23    90  2019-11-15
TRT010213T23    70  2019-12-20
TRT080328T15    150 2018-10-12
TRT080420T12    175 2018-05-11
TRT150120T16    150 2019-08-29
TRT150120A05    15  2019-11-18
TRT150120T16    300 2019-10-15
TRT150120T16    260 2019-11-18

最佳答案

你可以用这个:

df.update(df.groupby([df.index.str[:9],'Date']).transform('diff'))

              Value        Date
ISIN                           
TRT010213A15   10.0  2019-11-15
TRT010213T23   90.0  2019-11-15
TRT010213T23   70.0  2019-12-20
TRT080328T15  150.0  2018-10-12
TRT080420T12  175.0  2018-05-11
TRT150120T16  150.0  2019-08-29
TRT150120A05   15.0  2019-11-18
TRT150120T16  300.0  2019-10-15
TRT150120T16  260.0  2019-11-18

关于python - 如何过滤包含相似模式的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60302589/

相关文章:

python - Pandas - Groupby 对象行为

scala - 从数据框中选择时重命名列名

python - 如何将json数据定义为X和Y sklearn决策树数组

python - Django 模板加载器行为? (得到 Django TemplateDoesNotExist 异常)

python - 调用 Python C 扩展会阻止所有 Django 进程/用户

python - hdf5 文件到 pandas 数据框

Python loc + isin 返回 FutureWarning(元素比较失败)

python - 根据其他列和字典创建一个新列

python - 接收未知列数的 Spark UDF

python - 仅当数组具有共同值时如何组合数组?