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

使用Pandas读取含双值列的CSV并解决绘图维度不匹配错误

解决CSV含双值列导致的Pandas绘图维度不匹配问题

问题出在哪

你的CSV里loc列用引号包了两个值(比如"52, 13"),Pandas默认读取时如果参数没设对,会把引号内的逗号误判为列分隔符,进而打乱其他列的解析结构——比如Speed列被错误识别成二维结构(单列表格),而Timestamp是正常的一维序列,绘图时自然出现维度不匹配的报错。至于Timestamp和UTC能正常绘制,只是刚好这两列没被解析错误影响而已。

怎么解决

1. 正确读取CSV文件

读取时明确指定引号字符,让Pandas知道引号包裹的内容是单个字段,不会把内部的逗号当成列分隔符:

import pandas as pd

# 指定quotechar参数,确保loc列被解析为单个字符串
df = pd.read_csv('你的文件路径.csv', quotechar='"')

默认分隔符就是逗号,若CSV无特殊格式,delimiter=','可省略,有特殊情况时加上更稳妥。

2. 检查并修正列结构

读取后先确认Speed列的形状,确保它和Timestamp同为一维序列:

print(df['Timestamp'].shape)  # 正常应为(466,)
print(df['Speed'].shape)      # 正常也得是(466,)

如果Speed的形状是(466,1),说明它被当成了单列表格,转成一维序列即可:

df['Speed'] = df['Speed'].squeeze()

3. 拆分loc列(若需使用内部数值)

如果后续要用到loc里的两个坐标值,可以直接拆分该列:

# 去掉引号,按逗号加空格拆分,转成数值类型
df[['纬度', '经度']] = df['loc'].str.strip('"').str.split(', ', expand=True).astype(float)
# 不需要原loc列的话可以删除
df.drop('loc', axis=1, inplace=True)

4. 绘制折线图

确认数据结构正确后,直接用Matplotlib绘制:

import matplotlib.pyplot as plt

plt.figure(figsize=(10,6))
plt.plot(df['Timestamp'], df['Speed'])
plt.xlabel('Timestamp')
plt.ylabel('Speed')
plt.title('时间戳 vs 速度')
plt.xticks(rotation=45)  # 旋转x轴标签避免重叠
plt.tight_layout()
plt.show()

重点提醒

  • quotechar参数是核心,没设置的话Pandas会错误解析带引号的多值列,直接打乱整个表格结构。
  • 绘图前务必检查列的形状,避免因列结构错误导致维度不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:30:54