如何用Pandas拆分清洗单列DataFrame为多列结构化数据
解决方案
步骤1:将单列数据按3行一组重组为三列
你的原始数据是每3行对应一条完整的商品记录(价格、运费、产地),先把单列数据重新排列成三列结构:
import pandas as pd # 模拟原始数据(实际使用时替换为你的DataFrame) data = ["$ 145", "+ 22.34", "From USA", "$ 200", "+ 15.50", "From Canada"] df = pd.DataFrame({'Price': data}) # 每3行一组重组为三列 grouped_data = df['Price'].values.reshape(-1, 3) new_df = pd.DataFrame(grouped_data, columns=['Price', 'Shipping', 'Origin'])
步骤2:清洗Price和Shipping列并转为数值类型
用正则提取数字部分,去除所有非数字(小数点除外)的特殊字符,再转为数值类型:
# 清洗Price列,提取数字并转为float new_df['Price'] = new_df['Price'].str.extract(r'(\d+\.?\d*)').astype(float) # 清洗Shipping列,提取数字并转为float new_df['Shipping'] = new_df['Shipping'].str.extract(r'(\d+\.?\d*)').astype(float)
最终效果
处理后的DataFrame完全符合你的需求,可直接导出CSV用于分析:
| Price | Shipping | Origin |
|---|---|---|
| 145.0 | 22.34 | From USA |
| 200.0 | 15.50 | From Canada |
补充说明
如果原始Price字段存在$ C145这类含多余字母的情况,上述正则依然有效,会自动忽略字母、$、+、空格等特殊字符,只提取数字部分。导出CSV只需执行:
new_df.to_csv('price_analysis.csv', index=False)
内容的提问来源于stack exchange,提问作者Rashid
相关产品推荐
相关产品推荐

