3 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
您需要使用 , 的組合diff()
來檢查與下一行或上一行的絕對差是否大于 0.1,然后獲取這些行的索引(我知道您實(shí)際上想要索引,而不是描述性行號,即從 0 開始的索引)。您可以執(zhí)行此操作的一種方法是:
latitude_diff_list = df.index[(abs(df['latitude'].diff()) > 0.1) | (abs(df['latitude'].diff(-1)) > 0.1)].tolist() longitude_diff_list = df.index[(abs(df['longitude'].diff()) > 0.1) | (abs(df['longitude'].diff(-1)) > 0.1)].tolist()
如果您希望行號從 1 開始(例如[i+1 for i in latitude_diff_list]
) ,則可以將其偏移 +1

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
我相信你需要原始值和移位值之間的絕對差異,比較DataFrame.gt
更大:
m1 = df[['latitude','longitude']].diff().abs().gt(0.1)
m2 = df[['latitude','longitude']].shift().diff().abs().gt(0.1)
m = m1 | m2
print (m)
? ?latitude? longitude
0? ? ?False? ? ? False
1? ? ?False? ? ? False
2? ? ? True? ? ? False
3? ? ? True? ? ? False
4? ? ? True? ? ? ?True
5? ? ?False? ? ? ?True
latitude_diff_list = df.index[m['latitude']].tolist()
print (latitude_diff_list)
[2, 3, 4]
longitude_diff_list = df.index[m['longitude']].tolist()
print (longitude_diff_list)
[4, 5]

TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
這應(yīng)該有效:
import pandas as pd
df_ex = pandas.read_csv('ex.csv', sep=',')
latitude_diff_list, longitude_diff_list = [], []
for idx,row in df_ex[1:].iterrows():
if abs(row['latitude'] - df_ex.loc[idx-1, 'latitude']) > 0.1:
latitude_diff_list.extend([idx-1, idx])
if abs(row['longitude'] - df_ex.loc[idx-1, 'longitude']) > 0.1:
longitude_diff_list.extend([idx-1, idx])
latitude_diff_list, longitude_diff_list = list(set(latitude_diff_list)), list(set(longitude_diff_list))
添加回答
舉報(bào)