Как проиндексировать Python DF для нескольких значений - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть df:

     ccy    tenor    entry    exit
0    EUR    3m3m       1       3           
1    GBP    6m3m       2       1           
2    JPY    1y1y       4       2        
3    EUR    2y1y       2       5           
4    GBP    9m3m       1       2        
5    AUD    6m3m3m     1       5        
6    JPY    2y1y       3       4   

Простой вопрос, но я борюсь с прикосновением. Как мне установить df для: а) теноры 1y1y и 2y1y (т.е. все, что заканчивается 1y) б) теноры 3м3м, 6м3м, 9м3м, 6м3м3м (т.е. все, что заканчивается на 3м)

df[df.tenor == '1y1y']

для a), выше дает мне 1y1y, но мне нужно выбрать несколько теноров

Спасибо

ожидаемый результат для а)

     ccy    tenor    entry    exit          
2    JPY    1y1y       4       2        
3    EUR    2y1y       2       5                 
6    JPY    2y1y       3       4   

ожидаемый результат для б)

     ccy    tenor    entry    exit
0    EUR    3m3m       1       3           
1    GBP    6m3m       2       1                    
4    GBP    9m3m       1       2        
5    AUD    6m3m3m     1       5      

1 Ответ

0 голосов
/ 03 сентября 2018

Использование Series.str.endswith или Series.str.contains:

df1 = df[df.tenor.str.endswith('1y')]
#alternative with regex $ for end of string
#df1 = df[df.tenor.str.contains('1y$')]
print (df1)
   ccy tenor  entry  exit
2  JPY  1y1y      4     2
3  EUR  2y1y      2     5
6  JPY  2y1y      3     4

df2 = df[df.tenor.str.endswith('3m')]
#alternative with regex $ for end of string
#df2 = df[df.tenor.str.contains('3m$')]
print (df2)
   ccy   tenor  entry  exit
0  EUR    3m3m      1     3
1  GBP    6m3m      2     1
4  GBP    9m3m      1     2
5  AUD  6m3m3m      1     5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...