这是一个例子,我有以下数据:
datetime keyword COUNT0 2016-01-05 a_click 1001 2016-01-05 a_pv 2002 2016-01-05 b_pv 1503 2016-01-05 b_click 904 2016-01-05 c_pv 1205 2016-01-05 c_click 90
我想将其转换为以下数据:
datetime keyword ctr0 2016-01-05 a 0.51 2016-01-05 b 0.62 2016-01-05 c 0.75
我可以使用不太优雅的代码来转换数据,但我希望能用更优雅的方式来做。
回答:
你可以这样做:
df['action'] = df.keyword.str.split('_').str.get(-1)df['keyword'] = df.keyword.str.split('_').str.get(0)df = df.set_index(['datetime', 'keyword', 'action']).unstack().loc[:, 'COUNT']df['ctr'] = df.click.div(df.pv)action click pv ctrdatetime keyword 2016-01-05 a 100 200 0.50 b 90 150 0.60 c 90 120 0.75