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)
添加回答
舉報