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

如何用Pandas从DataFrame的details列提取卧室等目标数据?

解决方案

方法一:正则表达式提取(推荐,适配字段顺序变化)

正则表达式是最可靠的提取方式,即使details列中各字段的顺序发生变化,也能准确抓取目标值:

# 提取卧室数量(Chambres)
df['nbChambre'] = df['details'].str.extract(r'(\d+) Chambres').astype(int)

# 提取浴室数量(Salles de bains)
df['nbSalleDeBain'] = df['details'].str.extract(r'(\d+) Salles de bains').astype(int)

# 提取房龄范围(ans)
df['NbAnnee'] = df['details'].str.extract(r'(\d+-\d+) ans')

说明:

  • str.extract(r'(\d+) Chambres'):匹配数字(\d+)后跟 Chambres的内容,提取括号内的数字部分
  • str.extract(r'(\d+-\d+) ans'):匹配类似20-30的范围格式后跟 ans的内容,提取括号内的范围字符串

方法二:基于字符串分割(适合字段顺序固定的场景)

如果details列中各字段的顺序始终固定,可以沿用你之前的分割思路:

# 先按'-'分割并去除每个元素的空格
split_details = df['details'].str.split('-').str.strip()

# 提取卧室数量(对应第3个分割元素,索引从0开始为第2位)
df['nbChambre'] = split_details.str[2].str.split('Chambres').str[0].astype(int)

# 提取浴室数量(对应第4个分割元素,索引3)
df['nbSalleDeBain'] = split_details.str[3].str.split('Salles de bains').str[0].astype(int)

# 提取房龄范围(对应第6个分割元素,索引5)
df['NbAnnee'] = split_details.str[5].str.split('ans').str[0].strip()

注意:这种方式完全依赖字段的固定顺序,如果后续数据中字段位置变动,提取结果会出错,因此更推荐正则表达式的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:02:24