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

Python如何移除CSV重复列并将其转换为行

转换宽格式CSV为长格式的方法

这里提供两种实用的Python pandas实现方案,帮你把重复的Date-Qty列转换为每行对应一组数据的格式。

方法一:使用wide_to_long(推荐)

这个函数专门针对这种带重复列名的宽格式数据设计,步骤简洁高效:

  1. 导入库并读取原始数据
import pandas as pd

# 读取空格分隔的CSV,自动为重复列名添加.1、.2后缀
df = pd.read_csv('input.csv', sep='\s+', header=0)
  1. 转换为长格式
# 指定标识符列Name,以及要转换的列前缀Date和Qty
long_df = pd.wide_to_long(df, stubnames=['Date', 'Qty'], i='Name', j='temp_col').reset_index()

# 移除临时生成的temp_col列(不需要的话)
long_df = long_df.drop('temp_col', axis=1)
  1. 保存结果
# 保存为空格分隔的CSV,不包含索引列
long_df.to_csv('output.csv', index=False, sep='\s+')

方法二:使用melt拆分合并

如果需要更灵活的自定义操作,可以通过两次拆分后合并的方式实现:

  1. 读取数据(同方法一)
import pandas as pd
df = pd.read_csv('input.csv', sep='\s+', header=0)
  1. 分别拆分Date和Qty列
# 拆分所有Date相关列
date_df = df.melt(id_vars='Name', value_vars=['Date', 'Date.1', 'Date.2'], value_name='Date')
# 拆分所有Qty相关列
qty_df = df.melt(id_vars='Name', value_vars=['Qty', 'Qty.1', 'Qty.2'], value_name='Qty')
  1. 匹配并合并数据
# 提取列名中的数字后缀用于匹配对应行
date_df['match_idx'] = date_df['variable'].str.extract('(\d+)', expand=False).fillna(0).astype(int)
qty_df['match_idx'] = qty_df['variable'].str.extract('(\d+)', expand=False).fillna(0).astype(int)

# 合并数据并保留需要的列
long_df = pd.merge(date_df, qty_df, on=['Name', 'match_idx'])[['Name', 'Date', 'Qty']]
  1. 保存结果(同方法一)
long_df.to_csv('output.csv', index=False, sep='\s+')

两种方法最终都会生成你需要的长格式DataFrame/CSV。如果原始数据中有更多Date-Qty对,方法一会自动识别所有同前缀列,方法二只需补充value_vars中的列名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:55:19