gpt4 book ai didi

python - 如何在 Pandas 数据框中的日期时间检查前几行中的行值?

转载 作者:行者123 更新时间:2023-12-03 22:55:28 26 4
gpt4 key购买 nike

我想获取以下数据,每天检查前一天是否观察到该动物,然后创建每天观察到的新动物的计数。

import pandas as pd
data = {'Date': pd.to_datetime(['18/08/2018', '18/08/2018', '18/08/2018',
'19/08/2018', '19/08/2018', '19/08/2018',
'19/08/2018', '19/08/2018', '20/08/2018',
'20/08/2018', '20/08/2018']),
'Animal': ['cat', 'dog', 'mouse', 'cat', 'dog', 'mouse', 'rabbit', 'rat', 'lion', 'tiger', 'monkey']
}

df = pd.DataFrame(data)

结果是这样的:

    1. 18/08/2018   3
2. 19/08/2018 2
3. 20/08/2018 3

我是 Python 的新手,非常感谢任何帮助!谢谢。

最佳答案

这是使用 pd.factorize 的一种方法:

s = (pd.Series(pd.factorize(df.Animal)[0]).groupby(df.Date).max()+1)
# decumulate and fill first row
s.diff().fillna(s)

Date
2018-08-18 3.0
2018-08-19 2.0
2018-08-20 3.0
dtype: float64

通过因式分解,我们将编码为枚举类型:

pd.factorize(df.Animal)[0]
# array([0, 1, 2, 0, 1, 2, 3, 4, 5, 6, 7], dtype=int64)

并且通过按Date 分组并获得max,我们得到了新动物的累计数量:

Date
2018-08-18 3
2018-08-19 5
2018-08-20 8
dtype: int64

现在我们只需获取diff 即可对Series 进行累加:

关于python - 如何在 Pandas 数据框中的日期时间检查前几行中的行值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60566420/

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