如何用Python合并CSV多列生成单个数值?已尝试Pandas遇问题
解决CSV多列合并为单个数值的问题
根据你的需求,目标是将CSV每行的各列数值按顺序拼接成一个单独的整数(比如示例中每行的1、2、3、4合并为1234)。以下提供几种可行的实现方法:
一、Pandas正确实现(解决你之前的问题)
如果之前用Pandas出错,大概率是类型转换或拼接逻辑没处理好,试试下面的代码:
import pandas as pd # 读取CSV文件 df = pd.read_csv("your_file.csv") # 把所有列转成字符串,按行拼接后转成整数 df["合并结果"] = df.astype(str).agg("".join, axis=1).astype(int) # 导出结果(可选) df[["合并结果"]].to_csv("merged_result.csv", index=False)
如果数据里有缺失值,可以先填充(比如df = df.fillna(0))再执行拼接。
二、原生Python+csv模块(无需第三方库)
不想用Pandas的话,直接用Python内置的csv模块处理:
import csv # 读取原文件并写入结果 with open("your_file.csv", "r", newline="") as infile, open("merged_result.csv", "w", newline="") as outfile: reader = csv.reader(infile) writer = csv.writer(outfile) # 写入结果表头 writer.writerow(["合并结果"]) # 跳过原文件的表头(如果没有表头就注释掉这行) next(reader) for row in reader: # 拼接每行元素并转成整数 merged_num = int("".join(row)) writer.writerow([merged_num])
三、命令行工具awk(适合Linux/macOS)
熟悉命令行的话,用awk可以快速完成:
# 无表头的情况,直接处理 awk -F ',' '{print int($1$2$3$4)}' your_file.csv > merged_result.csv # 有表头的情况,跳过第一行 awk -F ',' 'NR>1{print int($1$2$3$4)}' your_file.csv > merged_result.csv
注意:$1$2$3$4对应CSV的第1到第4列,根据你的实际列数调整。
内容的提问来源于stack exchange,提问作者a_44
相关产品推荐
相关产品推荐

