如何从pandas列中提取特定信息?

Sid:

这是posdf

      tradingsymbol
0     XYZ2061820500PE
1     XYZ20JUN21000PE
2     ABC20JUN100CE
3    ABC20JUN102.5PE
4     ABC20JUN92.5PE
4     XYZ20JUNFUT

我这样做是为了提取ABCXYZ到列:

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个字符。可能采用以下形式:20O1820N1820D18

第二次编辑:

type根据sammys注释添加行,其中可以是3个字符。

TIA

Shubham Sharma:

使用,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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章