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

如何在Python中将DataFrame指定列按规则转换为行

处理CSV列转行(重复列组转多行)

实现思路

你的需求本质是把按列分组存储的候选人数据转成按行存储,每组固定6个字段,用统一列名。用Pandas可以快速实现,步骤如下:

代码实现

import pandas as pd

# 1. 读取原始CSV文件
df = pd.read_csv('原始数据.csv')

# 2. 定义目标列名(统一用你指定的列名)
target_cols = ['N°Panneau', 'Sexe', 'Prénom_Nom_Cand', 'Voix', '% Voix/Ins', '% Voix/Exp']

# 3. 按每6列一组拆分所有列(因为每组固定6个字段)
column_groups = [df.columns[i:i+6] for i in range(0, len(df.columns), 6)]

# 4. 遍历每个列组,重命名并收集数据
processed_data = []
for cols in column_groups:
    # 提取当前组的列,并重命名为目标列名
    group_df = df[cols].copy()
    group_df.columns = target_cols
    # 过滤掉无候选人姓名的无效行(可选,根据你的数据情况调整)
    group_df = group_df.dropna(subset=['Prénom_Nom_Cand'])
    processed_data.append(group_df)

# 5. 合并所有组的数据,生成最终结果
final_df = pd.concat(processed_data, ignore_index=True)

# 6. 保存转换后的CSV
final_df.to_csv('转换后数据.csv', index=False)

关键说明

  • 不管原始列组的列名是col_xxx还是其他,只要是每6列对应一个候选人的完整数据,就能被正确拆分和重命名。
  • 如果原始数据的列数不是6的整数倍,最后一组不足6列的部分会被自动忽略(你可以根据实际情况调整拆分逻辑)。
  • dropna步骤是可选的,如果你的数据里存在空的候选人行,可以用这一步过滤掉;如果不需要过滤,直接删掉该行即可。

内容的提问来源于stack exchange,提问作者Tokoro-San

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:02:48