我在熊猫中有这个数据帧:
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
如果索引的前9个字符(“ISIN”)和值相同,如何获得“值”列之间的差(减法)在“日期”列中,日期是相同的。减法将在第10个字符上有“T”和第10个字符上有“A”的索引之间进行
例如,第一和第二索引的前9个字符为“TR010213”,“日期”值为“2019-11-15”。在这种情况下,第二行的“value”的新值(因为索引的第10个字符是“T”)应该是90(100-10),而第一行的“value”(索引的第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
你可以用这个:
IIUC,您可以使用
df.index.str[:9]
获取前9个字符,并且groupby().shift()
:输出:
注意:出于某种原因,
groupby().diff()
对我不起作用相关问题 更多 >
编程相关推荐