如何用Python将含房间面积的字符串拆分为对应DataFrame列与数值
错误原因
- 原代码使用
str.split(',',1, expand=True)仅按逗号拆分1次,仅会生成2列数据,无法匹配你要赋值的5个列,直接触发列长度不匹配的报错 - 不同行的房间数量不一致,直接拆分后列数不固定,不能直接赋值给固定列名的DataFrame
解决方案
通过自定义函数逐行处理面积字符串,将房间名与对应面积两两配对后转换为字典,再统一转为DataFrame,缺失值自动填充0即可。
可直接运行的代码
import pandas as pd def parse_area(line): # 拆分字符串并清洗空值、首尾空格 items = [i.strip() for i in line.split(',') if i.strip()] res = {} bedroom_cnt = 1 for idx in range(0, len(items), 2): room = items[idx] area = float(items[idx+1]) if room == 'Bedroom': res[f'Bedroom_{bedroom_cnt}'] = area bedroom_cnt += 1 else: res[room] = area return res # 逐行处理后转为DataFrame,缺失值填0 df_result = pd.DataFrame(df['Area(sq.ft)'].apply(parse_area).tolist()).fillna(0) # 按需求调整列顺序并重命名为无后缀格式 df_result = df_result.reindex(columns=['Master Bedroom', 'Bedroom_1', 'Bedroom_2', 'Bedroom_3', 'Study Room']).rename(columns=lambda x: x.split('_')[0])
运行后得到的df_result就是你期望的输出格式,缺少的卧室、书房面积会自动填充为0。
内容的提问来源于stack exchange,提问作者Subham Saha
相关产品推荐
相关产品推荐

