如何使用lambda函数将DataFrame列中的带前缀字符串转换为纯数值
嘿,这个需求用lambda函数配合字符串分割就能轻松搞定!刚好你的数据都是「前缀_数值」的格式,核心思路就是把字符串按下划线拆分,提取后面的数值部分再转成浮点数就行。
先给你一个完整的可运行示例:
import pandas as pd # 模拟你的DataFrame df = pd.DataFrame({ 'original_col': ['abc_0.1', 'aabbcc_-0.010', 'qwerty_0.555'] }) # 用lambda函数转换列 df['numeric_col'] = df['original_col'].apply(lambda x: float(x.split('_')[-1])) print(df['numeric_col']) # 输出结果: # 0 0.100 # 1 -0.010 # 2 0.555 # Name: numeric_col, dtype: float64
代码解释:
x.split('_'):把每个字符串按下划线分割成列表,比如'abc_0.1'会变成['abc', '0.1'][-1]:取分割后列表的最后一个元素,也就是我们需要的数值字符串float():把字符串转换成浮点数类型,得到纯数值
如果你的数据里可能存在多个下划线的情况(比如'abc_def_0.2'),推荐改用rsplit('_', 1),它会从字符串右侧只分割一次,确保我们取到的是最后一个下划线后面的数值:
df['numeric_col'] = df['original_col'].apply(lambda x: float(x.rsplit('_', 1)[-1]))
这样处理后,不管前缀里有多少下划线,都能准确提取到后面的数值啦!
内容的提问来源于stack exchange,提问作者user19758369
相关产品推荐
相关产品推荐

