我有一个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
答案 0 :(得分:4)
使用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