【问题标题】:Pandas/MatplotLib Length mismatch: Expected axis has 3 elements, new values have 2 elementsPandas/MatplotLib 长度不匹配:预期轴有 3 个元素,新值有 2 个元素
【发布时间】:2018-09-21 00:58:25
【问题描述】:

我正在尝试使用 Pandas 在散点图上针对浮点值绘制时间序列日期,但是在尝试绘制时出现奇怪错误“长度不匹配:预期轴有 3 个元素,新值有 2 个元素”数据。

这是我正在使用的 Python 代码

get_ipython().magic('matplotlib inline')
import matplotlib.pyplot as plt
import seaborn; seaborn.set()
import pandas as pandas


base_rate_over_time = pandas.read_csv("/Users/clarkj84/Desktop/boe-all-time-base-rate.csv")

base_rate_over_time = base_rate_over_time.drop(['SERIES'], axis=1)

base_rate_dates_as_series = pandas.Series(base_rate_over_time['DATE'])

base_rate_over_time['DATE'] = pandas.to_datetime(base_rate_dates_as_series)

base_rate_over_time.plot(0, 0)

base_rate_over_time.reset_index(inplace=True)

base_rate_over_time.columns = ['DATE','VALUE']

base_rate_over_time.plot(kind = 'scatter', x = 'DATE', y = 'VALUE')

plt.show()

这是我试图绘制的数据集的 sn-p

       index       DATE  VALUE
0          0 1975-01-02  11.50
1          1 1975-01-03  11.50
2          2 1975-01-06  11.50
3          3 1975-01-07  11.50
4          4 1975-01-08  11.50
5          5 1975-01-09  11.50
6          6 1975-01-10  11.50
7          7 1975-01-13  11.50

是什么导致了这里的列错误?

【问题讨论】:

  • 我认为绘图日期时间有问题,请查看this 以获取可能的解决方案。

标签: python pandas matplotlib


【解决方案1】:

在我的情况下,这是分隔符问题,

由下面的stmt解决

df = pd.read_csv("pos.csv", sep='"', header=None)

得到

“字符串1,字符串2”

【讨论】:

    【解决方案2】:

    看起来像这条线

    base_rate_over_time.columns = ['DATE','VALUE']
    

    是错误的原因。此命令用于重命名列,但是,此时base_rate_over_time 数据框有 3 列,而只给出了两个新的列名。这里有 3 列,因为在上面的行中使用了 reset_index(),这将创建新的 index 列。

    您可以简单地删除这两行或在重命名列之前使用drop('index', inplace=True)

    【讨论】:

      猜你喜欢
      • 2020-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-23
      • 2020-09-09
      • 1970-01-01
      • 2020-07-10
      • 2017-12-06
      相关资源
      最近更新 更多