在数据框中查找“缺失”值的最佳方法是什么?

时间:2018-07-20 08:09:49

标签: python pandas dataframe indexing

说有一个数据框:

import pandas as pd
df = pd.DataFrame([1,2,3,4,5, 7,8, 10])

我想在其中找到“缺失”数字(6和9)。我要做的代码是:

li = []
low = int(min(df.values))
high = int(max(df.values))

for i in range(low, high+1):
    if i not in df.values:
        li.append(i)

print(li)
>>> [6, 9]

但是,如果数据帧很大,则for循环可能需要一些时间。就我而言,数据帧的长度约为30万行,需要162秒。

是否有更有效的方法(矢量化)?

2 个答案:

答案 0 :(得分:3)

只需列出完整范围(假设边界在df中表示),然后使用isin()来找出差异。

m = 10
full = pd.Series(np.arange(1, m+1))

full[~full.isin(df[0])].values
# array([6, 9])

答案 1 :(得分:0)

df['didf'] = df[0] - df[0].shift(1)将突出显示空白,而值大于1则表示缺少值