我在熊猫中有这个数据框:
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)的前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
答案 0 :(得分:2)
您可以使用此:
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
答案 1 :(得分:1)
IIUC,您可以使用ECHO OFF
CLS
:MENU
ECHO.
ECHO ...............................................
ECHO PRESS 1 or 2 to select your task, or 4 to EXIT.
ECHO ...............................................
ECHO.
ECHO 1 - Test
ECHO 2 - Production
ECHO 4 - EXIT
ECHO.
CHOICE /C:124
IF ERRORLEVEL 1 SET M=1
IF ERRORLEVEL 2 SET M=2
IF ERRORLEVEL 4 SET M=4
IF %M%==1 GOTO TEST
IF %M%==2 GOTO PROD
IF %M%==4 GOTO EOF
:TEST
ECHO TEST
cd %~dp0\Test\
start Test.exe
GOTO MENU
:PROD
ECHO PROD
cd %~dp0\Production\
start Production.exe
GOTO MENU
来获取前9个字符,并使用df.index.str[:9]
:
groupby().shift()
输出:
df['Value'] -= df.groupby([df.index.str[:9], df['Date']]).Value.shift().fillna(0)
注意:由于某些原因, 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
对我不起作用。