You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:从DataFrame的Entity列提取引号内的目标数字

嗨,我来帮你搞定这个提取需求!针对你提到的两种场景,我用Python+pandas整理了具体的实现方法,直接就能用:

一、提取最后一对引号之间的数字

从你的示例数据来看,我们需要捕获每一行里最后一个双引号之后的数字(包括负数)。这里用正则表达式结合pandas的str.extract就能轻松实现:

首先先构造你的示例DataFrame(方便测试):

import pandas as pd

data = {
    'Entity': [
        'Received \' "bsm": ["entityID":"196609" "entityID":"-1140719616" "entityID":"196609" "entityID":"196609" "entityID":"196609" "entityID":"10000227',
        'Received \' "bsm": ["entityID":"196609" "entityID":"-1140719616'
    ]
}
df = pd.DataFrame(data)

然后执行提取操作:

# 提取最后一对引号中的数字(支持负数)
df['last_entity_id'] = df['Entity'].str.extract(r'.*"(-?\d+)')

正则说明:

  • .*":贪婪匹配任意字符,直到遇到最后一个双引号(这一步是关键,确保我们定位到最后一组引号)
  • (-?\d+):捕获引号后的数字,-?表示允许负数,\d+匹配1个或多个数字

执行后你会得到新列last_entity_id,里面就是每行最后一个引号内的数字。

二、提取所有数字

如果需要把每行里所有的数字(包括负数)都提取出来,可以用str.findall方法,它会返回一个包含所有匹配结果的列表:

# 提取所有数字,结果以列表形式存储
df['all_entity_ids'] = df['Entity'].str.findall(r'-?\d+')

如果想把每个数字单独拆成一行(方便后续统计或分析),可以用explode展开:

# 展开列表为单独行
df_exploded = df.explode('all_entity_ids', ignore_index=True)

验证结果

你可以打印输出看看效果:

print("提取最后一个ID的结果:")
print(df[['Entity', 'last_entity_id']])

print("\n提取所有ID的列表结果:")
print(df[['Entity', 'all_entity_ids']])

print("\n展开后的单行ID:")
print(df_exploded)

如果你的数据里有特殊情况(比如数字带小数点、引号内有非数字字符),可以微调正则:比如要匹配带小数的数字,就把\d+改成\d+\.?\d*即可。

内容的提问来源于stack exchange,提问作者Nik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:12:05