首页 > 解决方案 > 如何在熊猫数据框中的日期时间检查前几行中的行值?

问题描述

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

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 很陌生,所以非常感谢任何帮助!谢谢。

标签: pythonpandasdataframecount

解决方案


这是另一个使用集合的提议然后shift检查差异

m = df.groupby('Date')['Animal'].agg(set)
n = m.str.len()
n.iloc[1:] = [len(a.difference(b)) for a,b in zip(m,m.shift().fillna(m.head(1)))][1:]
print(n)

print(n)

Date
2018-08-18    3
2018-08-19    2
2018-08-20    3
dtype: int64

推荐阅读