怎样才能得到我需要的表?

我的数据分组有问题。

这是我的一块数据集,有一些对医院和牙医的评价,以及这些评价的年月。

受访者ID nr 姓名 分数 年月日 1 6665医院 7,0 2020 1 2 6668牙医 5,5 2020 1 3 6665医院 6,8 2020 2 4 6668牙医 5,7 2019 12

当我使用这个脚本时,

df[['idnumber', 'score', 'respondents' , 'year', 'month',]].groupby('Id nr').agg({'score': 'mean', 'respondents': 'count'}).reset_index()

我得到了我需要的第一个表。

Id nr Score Respondent 6665 6,9 2 6668 5,6 2

但现在我还想在表格中多加入2个变量。 1. ‘名称’这一列。我可以在这里使用什么代码来代替’平均值’或’计数’? 2. 然后我想知道一年中每个月有多少评论。

我怎样修改脚本才能得到下面的表格?

Id nr Score 受访者姓名 2019 – 12 2020 – 1 2020 – 2 3. 6665 6,9 2 医院 0 1 1 6668 5,6 2 牙科医生 1 1 0

解决方案:

我会先把你的两个日期列连起来。

df['date'] = df['year'].astype(str) + "-" + df['month'].astype(str)

然后执行你的pandas groupby操作merges和get_dummies来扩展你的日期列值,然后再进行分组,得到你想要的输出。我假设分数列是要有浮动值的。

df2 = df.groupby(['Id nr','Name']).agg({'Respondent':'count', 'Score':'mean'}).reset_index()
df2 = pd.merge(df2, df[['Id nr', 'Name','date']], on=['Id nr', 'Name'], how='left')
df2 = pd.get_dummies(df2, columns =['date'])
df2 = df2.groupby(['Id nr','Name','Respondent','Score']).agg(sum).reset_index()

输出。

   Id nr    Name    Respondent  Score   date_2019-12   date_2020-1  date_2020-2
0   6665    Hospital    2        6.9       0                  1         1
1   6668    Dentist     2        5.6       1                  1         0

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何使用自定义的比较器在一个集合中进行比较。

2022-5-11 7:00:33

解决方案

Microsoft Visual Studio 2015安装错误

2022-5-11 7:00:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索