【发布时间】:2016-11-04 23:45:18
【问题描述】:
我有一个包含“日期”和“数字”列的数据框。
dates = pd.date_range('1/1/2001','1/1/2003', freq = 'd')
nums = [np.random.randint(100) for x in range(len(dates))]
df = pd.DataFrame({'Dates': dates, 'DOW': dates.strftime('%a'), 'Nums': nums})
df = df[(df.DOW != 'Sat') & (df.DOW !='Sun')]
df = df.drop([7,18]).reset_index(drop = True)
我需要对数据框进行分类,以便我可以每周单独隔离。最终目标是查看每周的 MAX 'Nums' 值,并将其与下一周的 LAST 值进行比较,以了解百分比变化是多少。例如:
week1 = df[0:5]
week2 = df[5:9]
week3 = df[9:12]
In [156]: w1max = week1.Nums.max()
Out[156]: 97
In [157]: w2Last = week2.iloc[-1].Nums
Out[157]: 76
pctChange = (w2Last-w1max)/float(w1max)
In [166]: pctChange
Out[166]: -0.21649484536082475
问题是有些星期缺少几天(例如第 2 周缺少星期一,第 3 周缺少星期五)。那么如何将它们分开呢?
最接近的似乎是使用df.resample(),但我不知道如何进行比较。
【问题讨论】:
标签: python datetime pandas resampling