Python中如何将表格列值拆分为多行并新增category列
Python实现表格按值等分拆行、新增分类列
处理这类表格转换需求,用pandas库实现最简便,步骤如下:
- 先安装依赖库:执行命令
pip install pandas - 核心逻辑:将原始每一行重复指定份数,计算等分后的value值,再按顺序给拆分出的行填充分类值
完整可运行代码如下:
import pandas as pd # 1. 读取/构造原始数据,实际场景替换为pd.read_csv()/pd.read_excel()读取本地文件 raw_df = pd.DataFrame({ 'date': ['2021-02-03', '2021-02-04', '2021-02-05'], 'type': ['a', 'b', 'c'], 'value': [150, 150, 150] }) # 2. 配置拆分规则:要填充的分类值列表,列表长度就是拆分的份数 category_list = ['x', 'y', 'z'] split_count = len(category_list) # 3. 行拆分处理 # 每一行重复split_count次 result_df = raw_df.loc[raw_df.index.repeat(split_count)].reset_index(drop=True) # value等分为split_count份 result_df['value'] = result_df['value'] / split_count # 按顺序填充category列 result_df['category'] = category_list * len(raw_df) # 4. 导出结果,不需要导出可以注释这行 result_df.to_csv('拆分结果.csv', index=False) # 打印验证结果 print(result_df)
运行后输出的结果和预期结构完全一致:
date type value category 0 2021-02-03 a 50.0 x 1 2021-02-03 a 50.0 y 2 2021-02-03 a 50.0 z 3 2021-02-04 b 50.0 x 4 2021-02-04 b 50.0 y 5 2021-02-04 b 50.0 z 6 2021-02-05 c 50.0 x 7 2021-02-05 c 50.0 y 8 2021-02-05 c 50.0 z
补充说明
- 如果需要value保留整数,把计算value的代码改成
result_df['value'] = result_df['value'] // split_count即可 - 如果后续需要调整拆分份数、分类值,只需要修改
category_list的内容就行,其他代码逻辑不用改动 - 读取和导出文件支持csv、excel等多种格式,根据自己的文件类型切换pandas对应的读写方法即可
内容的提问来源于stack exchange,提问作者yangyang
相关产品推荐
相关产品推荐

