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

Python中转置竖线分隔CSV文件:解决pandas单元格合并问题

解决CSV转置的问题:正确解析竖线分隔数据

嘿,我一眼就看出问题所在了——你没正确解析竖线分隔的CSV内容,直接把整行字符串丢进DataFrame,自然所有数据都挤在一个单元格里啦!咱们一步步来搞定它:

核心问题:未指定分隔符+处理冗余空格

默认情况下,pandas.read_csv()用逗号作为分隔符,但你的文件是用竖线|分隔的,而且部分字段还有前置空格(比如 ALB),这两个细节都得处理到位。

完整解决方案

方法1:直接读取本地文件(推荐)

如果你的数据存在本地文件里,用下面的代码就能正确读取并转置:

import pandas as pd

# 读取竖线分隔的CSV,指定分隔符,跳过字段前的空格,把第一列设为索引
df = pd.read_csv('your_input.csv', sep='|', index_col=0, skipinitialspace=True)

# 执行转置
transposed_df = df.T

# 按需输出成竖线分隔的文件
transposed_df.to_csv('your_output.csv', sep='|')

方法2:用示例字符串测试

如果是想直接用你给出的示例数据验证,可以用StringIO模拟文件读取:

import pandas as pd
from io import StringIO

# 你的示例CSV内容
csv_content = """CountryCode|AFG| ALB| DZA
CountryISO2|AF| AL| DZ
CountryName|Afghanistan| Albania| Algeria"""

# 读取并解析
df = pd.read_csv(StringIO(csv_content), sep='|', index_col=0, skipinitialspace=True)

# 转置并打印结果
transposed_df = df.T
print(transposed_df)

执行后你会得到和期望完全一致的输出:

CountryCode CountryISO2    CountryName
AFG               AFG          AF    Afghanistan
ALB               ALB          AL      Albania
DZA               DZA          DZ      Algeria

为什么你的代码不对?

你之前的代码pd.DataFrame(data=csv)应该是把每行的完整字符串当成了单个元素,导致DataFrame的结构变成了每行只有一个单元格,转置后自然无法拆分出正确的列和行。只有先把每行按|分割成多个字段,才能让pandas识别出正确的表格结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:18:54