Python 熊猫-识别项目的最后一个条目

Python 熊猫-识别项目的最后一个条目,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,看起来像: df = pd.DataFrame({'ID': [4]*2 +[5]*4 , 'Timestamp' : pd.date_range('2000-01-01', periods=6)}) ID Timestamp 0 4 2000-01-01 1 4 2000-01-02 2 5 2000-01-03 3 5 2000-01-04 4 5 2000-01-05 5 5 2000-01-06 我希望标识ID列中

我有一个数据框,看起来像:

df = pd.DataFrame({'ID': [4]*2 +[5]*4 , 'Timestamp' : pd.date_range('2000-01-01', periods=6)}) 

 ID  Timestamp 
0   4 2000-01-01 
1   4 2000-01-02  
2   5 2000-01-03  
3   5 2000-01-04  
4   5 2000-01-05  
5   5 2000-01-06  
我希望标识ID列中的最后一个条目(标记为0)。因此,所需的输出应该类似于:

 ID  Timestamp   last
0   4 2000-01-01  -
1   4 2000-01-02  0
2   5 2000-01-03  -
3   5 2000-01-04  -
4   5 2000-01-05  -
5   5 2000-01-06  0

我该怎么做?我尝试使用df.duplicated('ID')的各种选项,但使用该选项,我可以删除最后一个条目,但不能识别/标记最后一个条目

为返回值添加参数
keep='last'
,为非最后一个值添加
True
,为最后一个值添加
False

df['last'] = np.where(df.duplicated('ID', keep='last'), '-', '0') 
print (df)
   ID  Timestamp last
0   4 2000-01-01    -
1   4 2000-01-02    0
2   5 2000-01-03    -
3   5 2000-01-04    -
4   5 2000-01-05    -
5   5 2000-01-06    0
详细信息

print (df.duplicated('ID', keep='last'))
0     True
1    False
2     True
3     True
4     True
5    False
dtype: bool
使用:


我通过以下方式组合您的代码来识别第一个和最后一个元素:df['first_last']=np.where(df.duplicated('ID',keep='last'),(np.where(df.duplicated('ID',keep='first'),1,0)),0)也许这对将来的人有帮助
df.loc[df.groupby('ID').tail(1).index, 'last'] = 0

print(df)

#    ID  Timestamp  last
# 0   4 2000-01-01   NaN
# 1   4 2000-01-02   0.0
# 2   5 2000-01-03   NaN
# 3   5 2000-01-04   NaN
# 4   5 2000-01-05   NaN
# 5   5 2000-01-06   0.0