我有一个包含以下数据的熊猫数据框,我想添加一个新列,该列针对每个日期返回过去3天中最频繁出现的“ weather_type”。如果结果是平局,我希望返回最新的“ weather_type”。
d = {'date': ['17/02/2017', '18/02/2017', '19/02/2017', '20/02/2017',
'21/02/2017', '22/02/2017'], 'precipmm': [1, 0, 3, 2, 7, 8], 'weather_type':
['rain', 'sun', 'rain', 'snow', 'snow', 'rain']}
df = pd.DataFrame(data=d)
df['date']=pd.to_datetime(df['date'], format='%d/%m/%Y')
df['rollingsum_precipmm']=df['precipmm'].rolling(window=3).sum()
我已经设法使用以下方法创建一个新列,其中包含过去三天总“沉淀”的总和:
df['rollingsum_precipmm']=df['precipmm'].rolling(window=3).sum()
我怀疑答案围绕着这个问题,但是到目前为止,我一直无法找到解决方案。
一如既往的帮助
科林
最佳答案
要获得滚动模式,您可以执行以下操作:
from scipy.stats import mode
df['precipmm'].rolling(window=7).apply(lambda x: mode(x)[0])