![](/img/trans.png)
[英]Pandas select rows when column value within range from another row column value
[英]Pandas select rows when column value within range from another row column value with group filter
我想擴展一個我在問題鏈接上提出的問題
情況比較復雜,所以我認為那里的解決方案不適合
我正在嘗試使用以下格式從數據框(100k-500k行)創建子集
d = {'time':[1,2,3,5,7,9,9.5,10], 'val':['not','match','match','not','not','match','match','match'],
'group':['a','a','b','b','b','a','a','c']}
df = pd.DataFrame(d)
print(df)
group time val
0 a 1.0 not
1 a 2.0 match
2 b 3.0 match
3 b 5.0 not
4 b 7.0 not
5 a 9.0 match
6 a 9.5 match
7 c 10.0 match
當時間在有限范圍內時,我想選擇一個包含所有行的子集。 例如,如果范圍<= 1,則選擇第一行和最后三行,它們來自不同的組
而我想要的輸出
group time val
1 a 2.0 match
2 b 3.0 match
5 a 9.0 match
6 a 9.5 match
7 c 10.0 match
這適用於您的示例,希望適用於您的數據:
df.loc[((df['time'].diff() <= 1)|(df['time'].diff(-1) >= -1))&((df['group']!=df['group'].shift(-1).fillna(df['group']))|(df['group']!=df['group'].shift(1).fillna(df['group'])))]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.