python使用re正则表达式去除dataframe数据类型‘总价123-456(万/套)’中的字符串保留数字
时间: 2024-03-17 09:41:12 浏览: 52
可以使用正则表达式匹配出字符串中的数字部分,再将其转换为float类型。可以使用pandas库中的apply函数配合正则表达式实现。
假设需要对DataFrame数据类型中名为‘price’的列进行处理,可以使用如下代码:
```python
import re
def get_price(row):
price_str = row['price']
pattern = re.compile(r'\d+\.?\d*') # 匹配数字部分
price = pattern.findall(price_str)[0] # 获取数字部分
return float(price)
df['price'] = df.apply(get_price, axis=1) # 对DataFrame应用函数
```
这段代码使用正则表达式匹配出字符串中的数字部分,然后将其转换为float类型返回。最后使用apply函数将此函数应用到DataFrame的每一行上,得到处理后的结果。
相关问题
python使用re正则表达式提取dataframe数据类型中以-分隔的第一个数字
可以使用pandas中的`str.extract()`方法结合正则表达式来提取。
假设需要提取的列名为`col_name`,可以使用以下代码:
```python
import pandas as pd
# 构造样例数据
df = pd.DataFrame({'col_name': ['123-456', '789-012', '345-678']})
# 提取第一个数字
df['new_col'] = df['col_name'].str.extract(r'^(\d+)-')
# 查看结果
print(df)
```
输出:
```
col_name new_col
0 123-456 123
1 789-012 789
2 345-678 345
```
上述代码中,正则表达式`r'^(\d+)-'`表示:
- `^`:匹配字符串的开头
- `(\d+)`:匹配一个或多个数字,并且使用括号将其分组,方便后续提取
- `-`:匹配一个横杠
因此,提取的结果就是以横杠分隔的第一个数字。
python去除dataframe数据类型‘总价123-456(万/套)’中的字符串
可以使用正则表达式来去除dataframe中字符串中的非数字字符,例如:
```python
import re
# 示例数据
df = pd.DataFrame({'总价': ['123-456(万/套)', '789-1011(万/套)']})
# 定义正则表达式
pattern = re.compile(r'\D+')
# 去除非数字字符
df['总价'] = df['总价'].apply(lambda x: re.sub(pattern, '', x))
# 输出结果
print(df['总价'])
```
输出结果为:
```
0 123456
1 7891011
Name: 总价, dtype: object
```
这样就能去除字符串中的非数字字符了。
阅读全文