Python熊猫过滤器

时间:2019-11-07 13:38:28

标签: python pandas optimization

给定是一个熊猫表,其中每一行代表NxM网格上的一个正方形。仅当正方形被占用时,正方形才会出现在表格中。正方形可以被属于C类之一的对象占据。

表的每一行都包含以下几列:row,column,class。

对于NxM网格的每个占用的正方形,我希望找到:

  • 附近是否所有广场都被占用
  • 它们是否被相同类的对象占据

如果附近没有至少一个正方形被占用,请立即继续到下一行。

我当前的解决方案使表使用(行,列)作为多索引。然后,它将邻域的(行,列)坐标生成一个列表,并在熊猫表上调用loc。之后,我首先检查结果是否包含nan,最后是否存在外部类:

neighbourhood = [(r1, c1), (r2, c2), ...]
result = grid_df.loc[neighbourhood]['class'].ravel()
if np.isnan(result).any():
    return 'Free neighbourhood'
if len(np.unique(result)) == 1 and cur_class in np.unique(result):
    return 'Same class'
return 'Foreign class'

但是,此解决方案太慢。我有成千上万个这样的网格,具有不同的网格大小和不同的社区。有什么办法可以改善这一点?

0 个答案:

没有答案