2024-05-18 06:12:40 发布
网友
我想用正则表达式提取数字
df['price'][0]
有
'[<em class="letter" id="infoJiga">3,402,000</em>]'
我想提取3402000
3402000
我怎样才能在熊猫数据帧中得到这个?你知道吗
所有值的格式都一样吗?如果是这样,您可以使用一个简单的正则表达式来提取数值,然后将它们转换为int。你知道吗
int
import pandas as pd import re test_data = ['[<em class="letter" id="infoJiga">3,402,000</em>]','[<em class="letter" id="infoJiga">3,401,000</em>]','[<em class="letter" id="infoJiga">3,400,000</em>]','[<em class="letter" id="infoJiga">2,000</em>]'] df = pd.DataFrame(test_data) >>> df[0] 0 [<em class="letter" id="infoJiga">3,402,000</em>] 1 [<em class="letter" id="infoJiga">3,401,000</em>] 2 [<em class="letter" id="infoJiga">3,400,000</em>] 3 [<em class="letter" id="infoJiga">2,000</em>] Name: 0, dtype: object
定义提取并返回整数的方法
def get_numeric(data): match = re.search('>(.+)<', data) if match: return int(match.group(1).replace(',','')) return None
将其应用于数据帧
df[1] = df[0].apply(get_numeric) >>> df[1] 0 3402000 1 3401000 2 3400000 3 2000 Name: 1, dtype: int64
如果值是字符串,请尝试下面的代码。你知道吗
#your code df['price'][0] returns '[<em class="letter" id="infoJiga">3,402,000</em>]' let us say this is x. y = ''.join(c for c in x.split('>')[1] if c.isdigit()).strip() print (y) output: 3402000
希望有用。你知道吗
假设与环境无关的最简单正则表达式可能是([\d,]*)。比to_numeric函数还难。你知道吗
([\d,]*)
所有值的格式都一样吗?如果是这样,您可以使用一个简单的正则表达式来提取数值,然后将它们转换为
int
。你知道吗定义提取并返回整数的方法
将其应用于数据帧
如果值是字符串,请尝试下面的代码。你知道吗
希望有用。你知道吗
假设与环境无关的最简单正则表达式可能是
([\d,]*)
。比to_numeric函数还难。你知道吗相关问题 更多 >
编程相关推荐