![](/img/trans.png)
[英]Filter Dataframe Based on Differnce Between Columns [Not Next-to-Next Columns]
[英]Filter Dataframe Based on Differnce Betwwen Multiple Columns
我正在研究以下 dataframe, df
:
name val_1 val_2 val_3
AAA 20 25 30
BBB 15 20 35
CCC 25 40 45
DDD 20 20 25
我只需要保留任何val
列從前一個val
列增加超過 10 的名稱。 如果一列比前一列增加了不到 10 或者甚至沒有增加,我們需要刪除該名稱。
所需的 output:
name
BBB #val3 increases by 15
CCC #val2 increases by 15
最聰明的做法是什么? 任何建議,將不勝感激。 謝謝!
subset = df[df[['val_1', 'val_2', 'val_3']].diff().ge(10).any(axis=1)]
Output(假設val_3
的AAA
是 20 而不是 30):
>>> subset
name val_1 val_2 val_3
1 BBB 15 20 35
2 CCC 25 40 45
我理解的方式是,當兩行在所有列上的差異至少為 10 時,您希望保留這兩行。
為此,您需要使用diff
+ ge
+ all
構建一個掩碼,並將掩碼與其shift
結合起來:
m = df.filter(like='val_').diff().ge(10).all(1)
out = df[m|m.shift(-1)]
output:
name val_1 val_2 val_3
1 BBB 15 20 35
2 CCC 25 40 45
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.