以下是我创建合并多个查询日志数据帧的数据框的摘录:
keyword hits date average time
1 the cat sat on 10 10-Jan 10
2 who is the sea 5 10-Jan 1.2
3 under the earth 30 1-Dec 2.5
4 what is this 100 1-Feb 9
有没有办法可以使用Pandas来旋转数据,以便行是每日日期(例如1月1日,2月1日等),每个日期的相应1列是每日点击总和(总和当天的点击次数,例如1月1日的点击总数)除以该月的点击总数(例如整个1月份)(即每天的标准化每日命中百分比)
答案 0 :(得分:1)
解析日期,以便我们可以在一个月后提取。
In [99]: df.date = df.date.apply(pd.Timestamp)
In [100]: df
Out[100]:
keyword hits date average time
1 the cat sat on 10 2013-01-10 00:00:00 10.0
2 who is the sea 5 2013-01-10 00:00:00 1.2
3 under the earth 30 2013-12-01 00:00:00 2.5
4 what is this 100 2013-02-01 00:00:00 9.0
按天分组并总结点击数。
In [101]: daily_totals = df.groupby('date').hits.sum()
In [102]: daily_totals
Out[102]:
date
2013-01-10 15
2013-02-01 100
2013-12-01 30
Name: hits, dtype: int64
按月分组,并将每一行(每日总数)除以该月所有每日总数的总和。
In [103]: normalized_totals = daily_totals.groupby(lambda d: d.month).transform(lambda x: float(x)/x.sum())
In [104]: normalized_totals
Out[104]:
date
2013-01-10 1
2013-02-01 1
2013-12-01 1
Name: hits, dtype: int64
你的简单例子每个月只有一天,所以这些都是1。