[英]Python Pandas- Find the first instance of a value exceeding a threshold
通過使用idxmax
df.loc[(df.Value>3).groupby(df.Trace).idxmax()]
Out[602]:
Date Trace Value
2 3 1 3.1
5 2 2 3.6
您還可以使用.groupby().head(1)
實現此目的:
>>> df.loc[df.Value > 3].groupby('Trace').head(1)
Date Trace Value
2 3 1 3.1
5 2 2 3.6
這會找到每個Trace
的 Value > 3 的行的第一次出現(無論您的 DataFrame 當前處於何種順序)。
一個選項是首先按條件( Value > 3
)過濾,然后只為每個Trace
取第一個條目。 以下假設Trace
是數字。
import numpy as np
import pandas as pd
df = pd.DataFrame({"Trace" : np.repeat([1,2],4),
"Value" : [1.5, 1.9, 3.1, 5.5, 1.1, 3.6, 1.9, 6.2]})
df = df.loc[df.Value > 3.0]
df = df.loc[np.diff(np.concatenate(([df.Trace.values[0]-1],df.Trace.values))) > 0]
print(df)
這打印
Trace Value
2 1 3.1
5 2 3.6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.