pandas DataFrame列提取两个子字符串间内容返回NaN问题排查
你遇到的问题核心原因是contract列存储的不是字符串格式的文本,而是Future、Stock类的实际实例对象。Pandas的.str字符串访问器仅对字符串类型的Series生效,对类实例调用.str相关方法自然会返回全NaN的结果。
方案1:直接调用实例属性(更推荐)
你这些实例本身就自带symbol属性,直接通过apply取属性值即可,不需要做正则提取,性能和准确率都更高:
df['symbol'] = df['contract'].apply(lambda x: x.symbol)
方案2:转字符串后正则提取
如果你确实需要走正则提取的逻辑,先把contract列强制转为字符串类型,再执行正则匹配即可:
df['symbol'] = df['contract'].astype(str).str.extract(r"symbol='(.*?)'")
内容的提问来源于stack exchange,提问作者younggotti
相关产品推荐
相关产品推荐

