【发布时间】:2021-07-15 04:08:29
【问题描述】:
我有一个二维网格,上面有一条路径。我想计算网格的每个点到路径上每个点的距离,然后做一些 groupby 操作。我为此使用 dask.dataframe,但是我会用 pandas 来解释它,因为我认为这不是一个大问题。
代码类似这样
import numpy as np
import pandas as pd
x = np.linspace(0, 100, 100)
xv, yv = np.meshgrid(x, x, sparse='True')
path = np.random.rand(5, 2)
dists = []
for i in range(5):
xd = xv-path[i,0]
yd = yv-path[i, 1]
d = np.sqrt(xd**2+yd**2)
dists.append(d)
df = pd.concat([pd.DataFrame(c) for c in dists], axis=1, keys=np.arange(5))
所以dataframe应该大致是这样的
| 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| Grid distance to first point (100 x 100 dataframe) | Grid distance to second point (100 x 100 dataframe) | ... | ... | Grid distance to last point (100 x 100 dataframe) |
现在我想从这个数据框中计算出最大的“网格”。正如我想要获得一个 100 x 100 的网格,它代表路径的所有 5 个点的最大值。我该怎么做?
我不能使用关键字级别,因为它在 dask 中不受支持。但是我可以使用 df.columns.levels 所以我尝试了这个(在许多其他事情中)但它没有工作
df.groupby(df.columns.levels[1]).max()
它返回一个 100 x 500 的数据框,这不是我想要的。
知道如何解决这个问题吗?
【问题讨论】: