gpt4 book ai didi

python - 跟踪时间序列中唯一 ID 的出现

转载 作者:行者123 更新时间:2023-11-30 23:00:43 24 4
gpt4 key购买 nike

我需要您的帮助来跟踪 pandas 数据框中之前的观察结果。

示例:

df = pd.DataFrame({'ID':[1,2,3,1,2,4,1,3,5]},
index = ['2015-01-01','2015-01-01','2015-01-01',
'2015-01-02','2015-01-02','2015-01-02',
'2015-01-03','2015-01-03','2015-01-03'])

我想返回一个简单的输出(pandas 数据框或列表),其中包含日期和当天的观察结果以及之前看到的任何其他独特观察结果

期望的输出:

2015-01-01    [1,2,3]
2015-01-02 [1,2,3,4]
2015-01-03 [1,2,3,4,5]

我感觉这在 pandas 中是一个非常简单的操作,但我迷失了。您能帮我指出正确的方向吗?

谢谢

最佳答案

如果存在大量值,这可能不是最好的主意,我提醒您,pandas 对象并不是真正为保存非标量对象而设计的,但您可以使用 get_dummies :

>>> d = pd.get_dummies(df["ID"])
>>> m = d.cummax().groupby(level=0).last()
>>> m.apply(lambda x: m.columns[x.astype(bool)].tolist(), axis=1)
2015-01-01 [1, 2, 3]
2015-01-02 [1, 2, 3, 4]
2015-01-03 [1, 2, 3, 4, 5]
dtype: object

这是有效的,因为 dummies 为我们提供了一个成员资格表:

>>> d
1 2 3 4 5
2015-01-01 1 0 0 0 0
2015-01-01 0 1 0 0 0
2015-01-01 0 0 1 0 0
2015-01-02 1 0 0 0 0
2015-01-02 0 1 0 0 0
2015-01-02 0 0 0 1 0
2015-01-03 1 0 0 0 0
2015-01-03 0 0 1 0 0
2015-01-03 0 0 0 0 1

然后我们可以累积这些:

>>> d.cummax().groupby(level=0).last()
1 2 3 4 5
2015-01-01 1 1 1 0 0
2015-01-02 1 1 1 1 0
2015-01-03 1 1 1 1 1

关于python - 跟踪时间序列中唯一 ID 的出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35159296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com