[英]How do I check date time is in order with missing date times in data frame?
[英]How can I check, given a data frame that the values of a column are in increasing order without any missing number?
我有一個具有如下值的數據框:
Number
1
2
3
4
5
6
7
8
9
10
12
13
14
15
16
18
20
21
22
通過使用 pandas 的 sorted 函數,我的值正在增加,但我想檢查並發現是否有任何缺失值,在這種情況下,報告連續值集的開始和結束。例如,在這種情況下,它應該返回 [1,10],[12,16],[20,22]。 我想在這里卡住例如 18 即使它在那里但它不是連續的。 關於如何解決這個問題的任何線索?
您可以通過比較不等於1
與累積總和的差異進行聚合,並獲得最小值和最大值,刪除具有相同最小值和最大值的行,如此處18
並最后轉換為嵌套列表:
df1 = df.groupby(df['Number'].diff().ne(1).cumsum())['Number'].agg(['min','max'])
print (df1)
min max
Number
1 1 10
2 12 16
3 18 18
4 20 22
df1 = df1[df1['min'].ne(df1['max'])]
print (df1)
min max
Number
1 1 10
2 12 16
4 20 22
out = [list(x) for x in df1.to_numpy()]
print (out)
[[1, 10], [12, 16], [20, 22]]
您可以首先識別具有連續值的組,然后取這些組的第一個和最后一個值。 然后刪除那些只包含一個值(如18
)的組並轉換為列表:
g = df.Number.diff().fillna(1).ne(1).cumsum()
out = df.groupby(g).nth((0,-1))
out[out.index.duplicated(False)].groupby(level=0).agg(list).Number.tolist()
# [[1, 10], [12, 16], [20, 22]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.