第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

根據(jù)值差異刪除接近相同的行

根據(jù)值差異刪除接近相同的行

猛跑小豬 2022-10-25 10:16:13
你好,我有一個(gè)可以這樣總結(jié)的 pandas 數(shù)據(jù)框(大約 1000 行):     Date      Distance0   2014-08-13   5.91   2014-08-17   10.72   2014-08-13   6.23   2014-08-20   13.74   2014-08-13   8.85   2014-08-17   10.9當(dāng)日期相同并且兩行之間的距離差小于 0.5 時(shí),我想刪除行。我的數(shù)據(jù)沒有排序在這個(gè)微型案例中,我正在尋找的結(jié)果是取回這個(gè)數(shù)據(jù)框:     Date      Distance0   2014-08-13   5.91   2014-08-17   10.73   2014-08-20   13.74   2014-08-13   8.8索引 2 已被刪除,因?yàn)樗c索引 0 的日期相同,并且兩個(gè)距離之間的差異小于 0.5 。索引 5 已被刪除,它與索引 1 的日期相同,并且兩個(gè)距離之間的差異小于 0.5我對如何有效地解決這個(gè)問題一無所知。謝謝你的幫助 !編輯:我之前的例子不夠清楚。它不與特定日期的第一個(gè)距離(或最小距離)進(jìn)行比較。它在特定日期的任意兩個(gè)距離之間。這個(gè)例子可能更明確:     Date      Distance0   2014-08-13   5.91   2014-08-17   10.72   2014-08-13   6.23   2014-08-20   13.74   2014-08-13   8.85   2014-08-17   10.96   2014-08-13   3.37   2014-08-13   3.68   2014-08-13   3.59   2014-08-13   1.7它應(yīng)該返回:     Date      Distance0   2014-08-13   5.91   2014-08-17   10.73   2014-08-20   13.74   2014-08-13   8.86   2014-08-13   3.39   2014-08-13   1.7
查看完整描述

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


查看完整回答
反對 回復(fù) 2022-10-25
?
動漫人物

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)


查看完整回答
反對 回復(fù) 2022-10-25
?
汪汪一只貓

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


查看完整回答
反對 回復(fù) 2022-10-25
  • 3 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號