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

转置小型数据集后无法绘图及各类报错问题求助

问题与解决方案

问题描述

转置数据集后,绘制图表时遇到多个错误:

  • 执行df.plot("Country Name", "China"),报错KeyError: 'Country Name'
  • 执行df.plot.line(),报错KeyError: ('Country Name', 'China')
  • 执行以下代码:
    x = dfg1_2_4.iloc[:,0]
    y = dfg1_2_4.iloc[:,1]
    plt.scatter(x, y)
    plt.show()
    
    报错'single positional indexer is out-of-bounds'

尝试用df = df.reindex(df.index.drop(0))删除第一行未生效,需要解决错误并绘制折线图。

解决方案

问题核心是转置后数据集的表头与索引未正确配置,按以下步骤处理:

  1. 重置表头与清理数据
    转置后原索引会变成列,原表头会变成第一行数据,需要将第一行设为新表头再删除冗余行:
# 将第一行值设为列名
df.columns = df.iloc[0]
# 删除原第一行
df = df.drop(df.index[0])
# 重置索引(可选,让索引从0开始)
df = df.reset_index(drop=True)

执行后用print(df.columns)确认列名包含Country Name、China等字段。

  1. 绘制折线图
    处理完数据后,可直接用pandas或matplotlib绘制:
  • 方法1(pandas内置绘图):
import matplotlib.pyplot as plt

df.plot(x="Country Name", y="China", kind="line")
plt.show()
  • 方法2(matplotlib):
import matplotlib.pyplot as plt

plt.plot(df["Country Name"], df["China"])
plt.xlabel("Country Name")
plt.ylabel("China")
plt.show()

处理后iloc[:,0]也能正常获取第一列数据,解决索引越界问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:15:42