我想用来自dataframe的最大值绘制该点。
import pandas as pd
import matplotlib.pyplot as plt
dane = pd.read_table('C:\\xxx.txt', names=('rok', 'kroliki', 'lisy', 'marchewki'))
df = pd.DataFrame(dane)
data = df[1:]
data=data.astype(float)
x = int(data['kroliki'].max())
y = int(data['lisy'].max())
z = int(data['marchewki'].max())
p= data['rok'].where(data['kroliki'] == x)
q = data['rok'].where(data['lisy'] == y)
r = data['rok'].where(data['marchewki'] == z)
p1 = int(p[p.notnull()])
q1 = int(q[q.notnull()])
r1 = int(r[r.notnull()])
point = pd.DataFrame({'x':[p1],'y':[q1],'z':[r1]})
point.plot((p1,x),(q1,y),(r1,z))我有这样一个错误:
IndexError: index 1993 is out of bounds for axis 0 with size 4有人知道这段代码出了什么问题吗?谢谢
发布于 2019-04-04 07:37:46
我认为,当您使用Pandas绘图时,它将查找其内部的索引,而不是值。
因此,在您的情况下,当您这样做时:
point.plot(p1,x)Pandas将在x方向上查找索引1993,即在所有列中查找。换句话说,您应该有1993个列。
我尝试重现您的问题,如下所示:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,100,size=(10, 4)), columns=('rok', 'kroliki', 'lisy', 'marchewki'))
data = df[1:]
data=data.astype(float)
x = int(data['kroliki'].max())
y = int(data['lisy'].max())
z = int(data['marchewki'].max())
p = data['rok'].where(data['kroliki'] == x)
q = data['rok'].where(data['lisy'] == y)
r = data['rok'].where(data['marchewki'] == z)
p1 = int(p[p.notnull()])
q1 = int(q[q.notnull()])
r1 = int(r[r.notnull()])
point = pd.DataFrame({'x':[p1],'y':[q1],'z':[r1]})
point.plot((p1,x),(q1,y),(r1,z))我得到以下错误:
>>> AttributeError: 'tuple' object has no attribute 'lower'当我单独运行每个点时:
>>>> IndexError: index 85 is out of bounds for axis 0 with size 3要解决它,请执行以下操作:
import matplotlib.pyplot as plt
plt.plot((point.x, point.y, point.z), (x,y,z),'ko')我得到了以下结果:

希望能有所帮助。
https://stackoverflow.com/questions/55504799
复制相似问题