3 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
您必須檢查兩個(gè)條件才能保持一行:
相對于每組第一名的差異大于
0.5
該行不是組中的第一行
為此,您可以定義這兩個(gè)條件并用 a 鏈接它們bitwise OR
:
m1 = df.Distance.sub(df.groupby('Date').Distance.transform('first')).abs().gt(.5)
m2 = ~df.Date.duplicated()
df[m1|m2]
Date Distance
0 2014-08-13 5.9
1 2014-08-17 10.7
3 2014-08-20 13.7
4 2014-08-13 8.8

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
我找到了使用這種方法的方法,但看起來有點(diǎn)亂
df = df.sort_values(['Date','Distance'])
df['Date_s'] = df['Date'].shift(+1)
df['Distance_s'] = df['Distance'].shift(+1)
def remove_near_duplicate(distance,distance_s,date,date_s):
if (date == date_s) & (abs(distance-distance_s)<0.5):
return False
else:
return True
df['To_drop'] = df.apply(lambda row : remove_near_duplicate(row['Distance'],row['Distance_s'],row['Date'],row['Date_s']),axis=1)
df = df[df['To_drop']==True]
df.drop(columns=['To_drop','Date_s','Distance_s'],inplace=True)

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊
你可以做這個(gè)簡單的事情:
GroupBy 在
Date
列上。這將迎合重復(fù)的日期。獲取
diff
組內(nèi)的所有行。選擇
diff
大于Nan
或等于的行0.5
命令:
In [43]: df['diff'] = df.groupby('Date')['Distance'].diff()
In [47]: df[(df['diff'].isna()) | df['diff'].ge(0.5)].drop('diff', 1)
Out[47]:
Date Distance
0 2014-08-13 5.9
1 2014-08-17 10.7
3 2014-08-20 13.7
4 2014-08-13 8.8
添加回答
舉報(bào)