簡體   English   中英

如何過濾數據框中具有指定條件的行並將它們放入新的數據框中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM