python数据处理——获得pandas dataframe中字符串里的数字 str.extract

for i in df.columns:
df[i] = df[i].str.extract(’(\d+)’)

### Python Pandas DataFrame字符串转换为数字的方法 在数据分析过程中,经常需要将 `DataFrame` 列中的字符串数据类型转换为数值型以便进一步计算或分析。以下是几种常见的实现方式: #### 使用 `pandas.to_numeric()` 函数 `pandas.to_numeric()` 是一种简单而强大的工具,用于将字符串类型的列转换为数值类型。它支持错误处理选项,可以灵活应对异常情况。 ```python import pandas as pd # 创建示例 DataFrame df = pd.DataFrame({'string_column': ['1', '2', '3', 'four']}) # 将字符串列转换为数字,默认会将无法解析的内容设置为 NaN df['numeric_column'] = pd.to_numeric(df['string_column'], errors='coerce') print(df) ``` 上述代码中,`errors='coerce'` 参数表示当遇到无法转换的值时将其设为 `NaN`[^4]。 --- #### 使用 `.astype()` 方法 `.astype()` 可以显式指定目标数据类型。然而,如果存在不可转换的数据,则会抛出错误。因此,在使用前通常需清理数据。 ```python # 假定已清除所有非数字字符 df_cleaned = df[df['string_column'].str.isdigit()] df_cleaned['numeric_column'] = df_cleaned['string_column'].astype(float) print(df_cleaned) ``` 此方法适用于完全由可识别数字组成的字符串列[^5]。 --- #### 自定义函数配合 `apply()` 通过自定义逻辑来控制复杂的转换过程,例如去除单位或其他干扰项后再转为数字。 ```python def convert_to_number(x): try: return float(x.replace('$', '').replace(',', '')) # 移除货币符号和逗号 except ValueError: return None df['cleaned_value'] = df['dirty_string_column'].apply(convert_to_number) ``` 这种方法适合于原始数据包含多种格式的情况[^1]。 --- #### 处理带有正则表达式的复杂模式 有时字符串可能嵌套有其他信息(如 `[MASK]`),此时可以通过提取特定部分再完成转型。 ```python df['extracted_numbers'] = df['complex_strings'].str.extract(r'(\d+)').astype(float) ``` 这利用了正则表达式匹配纯数字片段并强制转化为浮点数[^2]。 --- ### 注意事项 - 如果源数据质量较差,建议先清洗掉无关字符或者标准化输入。 - 对批量操作保持谨慎态度,尤其是涉及大量缺失值或不一致记录的时候。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值