pandas dataframe 一行变多行 (query pv统计term pv)
关键字:
- 用jieba切词
- 用expand 一列变多列
- 用stack 列转行
- 用group by + aggr 相同term的pv求和
上效果:
query pv 0 今日新鲜事 10000 1 今日头条 100 2 北京天气 2000 3 上海天气 3000
term pv 0 上海 3000 1 今日 10100 2 北京 2000 3 天气 5000 4 头条 100 5 新鲜事 10000
上代码:
import pandas as pd import numpy as np import jieba df = pd.DataFrame({'query':['今日新鲜事','今日头条','北京天气','上海天气'], 'pv':[10000,100,2000,3000]}) #先用jieba切词 df['query'] = df['query'].apply(lambda x: ','.join(jieba.cut(x))) df = (df.set_index(['pv'])['query'] .str.split(',', expand=True) # query切分并expand成多列 .stack() # 列转行 .reset_index(level=1, drop=True) # 删除列对齐后的空值 .reset_index(name='term') .groupby('term').agg({'pv': np.sum}) # pv按term求和 .reset_index())
转载请注明出处: http://www.cnblogs.com/liyuxia713/