Python中检查一个范围内缺失的整数

5

假设有以下建筑信息数据框:

    id  floor     type
0    1     13   office
1    2     12   office
2    3      9   office
3    4      9   office
4    5      7   office
5    6      6   office
6    7      9   office
7    8      5   office
8    9      5   office
9   10      5   office
10  11      4   retail
11  12      3   retail
12  13      2   retail
13  14      1   retail
14  15     -1  parking
15  16     -2  parking
16  17     13   office

我想检查 floor 这一列是否存在缺失楼层(除了默认不存在的0层)。
代码:
set(df['floor'])

Out:

{-2, -1, 1, 2, 3, 4, 5, 6, 7, 9, 12, 13}

例如,对于上面的数据集(-2, -1, 1, 2, ..., 13),我希望返回一个指示楼层8、10、11在您的数据集中缺失。否则,只需返回您的数据集中没有丢失的楼层。如何在Pandas或Numpy中实现?非常感谢您提前的帮助。
1个回答

2
使用np.setdiff1d函数来计算从np.arange创建的范围中省略掉0后的差异。
arr = np.arange(df['floor'].min(), df['floor'].max() + 1)
arr = arr[arr != 0]

out = np.setdiff1d(arr, df['floor'])

out = ('no missing floor in your dataset' 
       if len(out) == 0 
       else f'floor(s) {", ".join(out.astype(str))} are missing in your dataset')
print (out)
floor(s) 8, 10, 11 are missing in your dataset

2
谢谢,如果我想要自动从“floor”列获取范围值怎么办? - ah bon
1
@ahbon 这是 np.arange,而不是 np.arrange - Dishin H Goyani
是的,我注意到了。 :) - ah bon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接