python - 如何在熊猫数据框中的日期时间检查前几行中的行值?
问题描述
我想获取以下数据,并每天检查前一天是否观察到动物,然后计算每天观察到的新动物的数量。
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 很陌生,所以非常感谢任何帮助!谢谢。
解决方案
这是另一个使用集合的提议然后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