![](/img/trans.png)
[英]How to filter DataFrame rows by list of conditions simultaneously on multiple columns
[英]How to filter rows with specified conditions in a dataframe and put them in a new dataframe?
test.csv 的數據是這樣的:
staff_id,clock_time,device_id,latitude,longitude
1001,2020/9/14 04:43:00,d_1,24.59652556,118.0824644
1001,2020/9/14 05:34:40,d_1,24.59732974,118.0859631
1001,2020/9/14 06:33:34,d_1,24.73208312,118.0957197
1001,2020/9/14 08:17:29,d_1,24.59222786,118.0955275
1001,2020/9/20 05:30:56,d_1,24.59689407,118.2863806
1001,2020/9/20 07:26:05,d_1,24.58237852,118.2858955
1001,2020/9/20 08:26:05,d_1,24.58237852,118.2858955
1001,2020/9/20 09:26:05,d_1,24.58237852,118.2858955
1001,2020/9/20 17:26:05,d_1,24.58237852,118.2858955
1001,2020/9/20 19:26:05,d_1,24.70237852,118.2858955
1001,2020/9/20 22:26:05,d_1,24.71237852,118.2858955
我想找到任何連續兩行的經度或緯度之差大於 0.1 的行,然后將結果放入新的數據幀中。
在我的例子中,第2、3、4、9、10行的緯度差大於0.1,第4、5行的經度差大於0.1。
我希望新的數據框是這樣的:
staff_id,clock_time,device_id,latitude,longitude
1001,2020/9/14 05:34:40,d_1,24.59732974,118.0859631
1001,2020/9/14 06:33:34,d_1,24.73208312,118.0957197
1001,2020/9/14 08:17:29,d_1,24.59222786,118.0955275
1001,2020/9/20 05:30:56,d_1,24.59689407,118.2863806
1001,2020/9/20 17:26:05,d_1,24.58237852,118.2858955
1001,2020/9/20 19:26:05,d_1,24.70237852,118.2858955
我的代碼:
import pandas as pd
df = pd.read_csv(r'E:/test.csv', encoding='utf-8', parse_dates=[1])
m1 = df[['latitude', 'longitude']].diff().abs().gt(0.1)
m2 = df[['latitude', 'longitude']].shift().diff().abs().gt(0.1)
new_dataframe = [...]
怎么做?
使用DataFrame.any
將布爾值的DataFrame.any
轉換為Series
並為移位掩碼添加Series.shift
,與|
對於按位OR
並最后添加DataFrame.copy
以避免在此過濾后以某種方式處理new_dataframe
時發出警告:
m1 = df[['latitude', 'longitude']].diff().abs().gt(0.1).any(axis=1)
new_dataframe = df[m1 | m1.shift(-1)].copy()
print (new_dataframe)
staff_id clock_time device_id latitude longitude
1 1001 2020/9/14 05:34:40 d_1 24.597330 118.085963
2 1001 2020/9/14 06:33:34 d_1 24.732083 118.095720
3 1001 2020/9/14 08:17:29 d_1 24.592228 118.095527
4 1001 2020/9/20 05:30:56 d_1 24.596894 118.286381
8 1001 2020/9/20 17:26:05 d_1 24.582379 118.285896
9 1001 2020/9/20 19:26:05 d_1 24.702379 118.285896
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.