基于时间列的最新值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于时间列的最新值相关的知识,希望对你有一定的参考价值。
我下面有mydf
,已在虚拟time
列和id
上进行了排序:
mydf = pd.DataFrame(
{
'id': ['A', 'B', 'B', 'C', 'A', 'C', 'A'],
'time': [1, 4, 3, 5, 2, 6, 7],
'val': ['a', 'b', 'c', 'd', 'e', 'f', 'g']
}
).sort_values(['id', 'time'], ascending=False)
mydf
id time val
5 C 6 f
3 C 5 d
1 B 4 b
2 B 3 c
6 A 7 g
4 A 2 e
0 A 1 a
我想添加一列(last_val
),对于每个唯一的id
,该列都基于val
列保存最新的time
。可以删除没有last_val
的条目。此示例中的输出如下所示:
mydf
id time val last_val
5 C 6 f d
1 B 4 b c
6 A 7 g e
4 A 2 e a
有什么想法吗?
答案
用途:
mydf['last_val'] = mydf.groupby('id')['val'].shift(-1)
mydf = mydf.dropna(subset=['last_val'])
或:
mydf['last_val'] = mydf.groupby('id')['val'].shift(-1)
mydf = mydf[mydf['id'].duplicated(keep='last')]
print (mydf)
id time val last_val
5 C 6 f d
1 B 4 b c
6 A 7 g e
4 A 2 e a
以上是关于基于时间列的最新值的主要内容,如果未能解决你的问题,请参考以下文章
获取基于另一列的条件成立的每一行的最新记录(Hive SQL)