Pandas / MatplotLib长度不匹配:预期轴有3个元素,新值有2个元素

时间:2018-04-11 08:20:13

标签: python pandas matplotlib

我正在尝试使用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()

以下是我试图反对的数据集的片段

       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

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

2 个答案:

答案 0 :(得分:0)

看起来像

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

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

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

答案 1 :(得分:0)

在我看来,这是定界符问题,

由以下stmt解决

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

获得

“字符串1,字符串2”