这是posdf
:
tradingsymbol
0 XYZ2061820500PE
1 XYZ20JUN21000PE
2 ABC20JUN100CE
3 ABC20JUN102.5PE
4 ABC20JUN92.5PE
4 XYZ20JUNFUT
我这样做是为了提取ABC
和XYZ
到列:
posdf['symbol'] = posdf['tradingsymbol'].str.extract('^(\D+)', expand=True)
我无法弄清楚如何才能以通用的方式提取以下各列:
strike type Expiry
0 20500 PE 20618
1 21000 PE 20JUN
2 100 CE 20JUN
3 102.5 PE 20JUN
4 92.5 PE 20JUN
4 NA FUT 20JUN
编辑:
type
最少2个字符,最多3 Expiry
个字符。始终为5个字符。可能采用以下形式:20O18
或20N18
或20D18
。
第二次编辑:
type
根据sammys注释添加行,其中可以是3个字符。
TIA
使用,Series.str.extract
在给定regex
的模式:
df1 = df['tradingsymbol'].str.extract(
r'(?P<expiry>\d{5}|\d{2}\w{3})(?P<strike>\d+(?:\.\d+)?)?(?P<type>\w+)')
df1 = df1[['strike', 'type', 'expiry']]
结果:
# print(df1)
strike type expiry
0 20500 PE 20618
1 21000 PE 20JUN
2 100 CE 20JUN
3 102.5 PE 20JUN
4 92.5 PE 20JUN
4 NaN FUT 20JUN
您可以测试正则表达式here
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句