亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

刪除列中具有重復項的行,僅適用于隨后連續幾天出現的重復項

刪除列中具有重復項的行,僅適用于隨后連續幾天出現的重復項

米脂 2023-10-18 16:37:47
我有一個 Pandas 數據框,其中有一Date列日期時間格式,如下所示。當查看連續的天時,我想刪除具有重復Name值的行,保留每個的最早日期Name。因此對于以下數據框:Date        Name  Points2020-04-24  John  32020-04-25  John  52020-04-26  John  82020-04-24  Bob   02020-04-25  Bob   02020-07-20  John  22020-07-21  John  7期望的結果是:Date        Name  Points2020-04-24  John  32020-04-24  Bob   02020-07-20  John  2請注意,數據不一定按上述方式排序。數據可以按Date然后Name或某種其他順序排序。
查看完整描述

1 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

以下方法適用于任何數據順序:


按名稱/日期排序,應用日期偏移并檢查增量。


import pandas as pd


data = {'Date':['2020-07-21', '2020-04-24', '2020-04-25', '2020-04-25', '2020-04-26', '2020-07-20', '2020-04-24'], 'Name':['John', 'John', 'John', 'Bob', 'John', 'John', 'Bob'], 'Points':[0,3,5,0,8,2,7]}

df = pd.DataFrame(data)

print(df)

df['Date']=pd.to_datetime(df['Date'])

df.sort_values(['Name', 'Date'], inplace=True)

print(df[df['Date'].shift(1)-df['Date']!= '-1 days'])


#print(df) - Note not sorted

         Date  Name  Points

0  2020-07-21  John       7

1  2020-04-25  John       5

2  2020-04-24  John       3

3  2020-04-25   Bob       0

4  2020-04-26  John       8

5  2020-07-20  John       2

6  2020-04-24   Bob       0

#print(df) - Output

        Date  Name  Points

6 2020-04-24   Bob       0

2 2020-04-24  John       3

5 2020-07-20  John       2

以下方法僅適用于問題中的數據順序:


我將把它留在這里,以防將來有人發現它有幫助。澄清后,對于這個特定問題來說它已經過時了。


使用 Shift 與以前的名稱進行比較:


df=df[df['Name'].shift(1) != df['Name']]

完整示例:


import pandas as pd


data = {'Date':['2020-04-24', '2020-04-25', '2020-04-26', '2020-04-24', '2020-04-25', '2020-04-20', '2020-04-21', ], 'Name':['John', 'John', 'John', 'Bob', 'Bob', 'John', 'John', ], 'Points':[3, 5, 8, 0, 0, 2, 7]}

df = pd.DataFrame(data)

print(df)

df=df[df['Name'].shift(1) != df['Name']]

print(df)


查看完整回答
反對 回復 2023-10-18
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號