如何为多个值索引python df

时间:2018-09-03 07:17:09

标签: python pandas indexing

我有一个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: a)1y1y和2y1y的期限(即以1y结尾的任何东西) b)3m3m,6m3m,9m3m,6m3m3m的期限(即以3m结尾的任何期限)

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

对于a),上面的代码给了我1y1y,但是我需要选择多个男高音

谢谢

a的预期输出

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

b)的预期输出

     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 :(得分:4)

使用Series.str.endswithSeries.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