如何从大熊猫中的(纬度,经度,值)列表创建2x2数组?

时间:2019-06-07 15:04:50

标签: python pandas numpy matplotlib

我有一个包含latlonval的pandas DataFrame。

lat  lon  val
50   60   1
51   60   2
52   60   3
50   61   7
51   61   8
52   61   9

要使用matlibplot.contourf,我必须发送网格数据而不是矢量。

为此,我使用numpy.meshgrid生成

lat = [50, 51, 52, 50, 51, 52]
lon = [60, 60, 60, 61, 61, 61]
x, y = np.meshgrid(lat, lon)

lat = 50 51 52 50 51 52
      50 51 52 50 51 52
      50 51 52 50 51 52
      50 51 52 50 51 52
      50 51 52 50 51 52
      50 51 52 50 51 52

lon = 60 60 60 60 60 60
      60 60 60 60 60 60
      60 60 60 60 60 60
      61 61 61 61 61 61
      61 61 61 61 61 61
      61 61 61 61 61 61

现在,我需要将val创建为:

val = 1 2 3 1 2 3 
      1 2 3 1 2 3
      1 2 3 1 2 3
      7 8 9 7 8 9
      7 8 9 7 8 9
      7 8 9 7 8 9

但是我不知道如何以“正确的方式”做到这一点。

当然,我可以创建一个空的3x3数组len(lat x lon),遍历其键,然后填充值。但这似乎是错误的方法。

此外,还有DataFrame.applymap,因此在进行迭代时不会让我的“手很脏”,但是它也感觉不对(而且很慢)。

如何创建val数组?

1 个答案:

答案 0 :(得分:1)

您将需要2 x 3的网格:

lat = [50, 51, 52, 50, 51, 52]
lon = [60, 60, 60, 61, 61, 61]
val = [1,2,3,7,8,9]

x = np.array(lat).reshape(2,3)
y = np.array(lon).reshape(2,3)
z = np.array(val).reshape(2,3)

plt.contourf(x,y,z)

重复中的更多信息:Make contour of scatter