Python:如何提取相对于一组坐标的Z列值?

时间:2018-09-05 11:08:22

标签: python pandas dataframe

我有一个熊猫数据框,其中有3列(“ X”,“ Y”,“ Z”)。 我需要用表面图来绘制它。 我指的是https://matplotlib.org/gallery/mplot3d/surface3d.html

因此,在值为Data [“ X”],Data [“ Y”]的情况下,表面应为Data [“ Z”]。而且重要的是要有一个彩色的表面来显示它的高度。

我到了:

a, b = np.meshgrid(data['X'], data['Y'])

现在我需要在调用之前定义Z

surf = ax.plot_surface(a, b, Z, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)

但这证明比我预期的要难。 我尝试过:

Z=data[data["X"]==a & data["Y"]==b]["Z"]

但这不起作用。有没有一种简单的方法可以从数据帧中提取Z值?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。不仅如@Michael O.所说,我需要在条件周围加上括号。但是我还需要更改mash网络的准备方式:

list_set_x=list(set(data["X"]))
list_set_y=list(set(data["Y"]))
Z=[]
for x in list_set_x:
    Z1=[]
    for y in list_set_y:
        C=float(data[(data["X"]==x)&(data["Y"]==y)]["Z"])
        Z1.append(C)
    Z.append(Z1)
c=np.array(Z)

e,f=np.meshgrid(list(set_y),list( set_x))
fig = plt.figure()
ax = fig.gca(projection='3d')

surf = ax.plot_surface(f, e, c, cmap=cm.coolwarm, linewidth=0, antialiased=False)