前言:
标题很难懂,直接上个例子吧。
上图为原始数据,想要转为下面的格式:
{‘用户1’: [{第1天的发帖量,第2天的发帖量…第31天的发帖量}, {第1天的投票数合计,第2天的投票数合计…第31天的投票数合计}, {第1天的收入合计,第2天的收入合计…第31天的收入合计}]}
很复杂吧,我也不明白整理成这样格式的意义是什么=,=
代码:
import pandas as pd
#合并清单
data_m1 = pd.read_csv('Py2019-01.csv', encoding='gbk')
data_m2 = pd.read_csv('Py2019-02.csv', encoding='gbk')
data_total = pd.concat([data_m1, data_m2], axis=0)
#发起时间处理
data_total['start_time'] = data_total.apply(lambda x: x['发起时间'][5:10], axis=1)
#每个用户分到日期的发帖量
user_post = data_total.pivot_table(index='用户名', values='投票数', columns='start_time', aggfunc='count',fill_value=0)
#每个用户分到日期的投票数
user_vote = data_total.pivot_table(index='用户名', values='投票数', columns='start_time', aggfunc='sum',fill_value=0)
#每个用户分到日期的获得奖励金额
user_money = data_total.pivot_table(index='用户名', values='支出总额', columns='start_time', aggfunc='sum',fill_value=0)
def combine(df, df_columns):
answer = []
for col in df_columns:
answer.append(df[col])
return answer
df_columns = list(user_money.columns)
user_post['total_post'] = user_post.apply(combine, df_columns=df_columns, axis=1)
user_vote['total_vote'] = user_vote.apply(combine, df_columns=df_columns, axis=1)
user_money['total_money'] = user_money.apply(combine, df_columns=df_columns, axis=1)
user = pd.concat([user_post[['total_post']], user_vote[['total_vote']], user_money[['total_money']]], axis=1)
def total_combine(df):
return [df['total_post'], df['total_vote'], df['total_money']]
user['total'] = user.apply(total_combine, axis=1)
user_total = user[['total']].reset_index()
keys = user_total['用户名'].tolist()
values = user_total['total'].tolist()
dict_list = dict(zip(keys, values))
print(dict_list['a-alice'])