【问题标题】:How do I find the mean/median of the different values in a row?如何找到连续不同值的平均值/中位数?
【发布时间】:2017-07-05 00:48:06
【问题描述】:

我有一个 csv 文件中的数据集,如下所示:

teacher         student         student grade
Jon             marin           99
Jon             Rob             81
Jon             marly           90
Bon             martin          76
Bon             marie           56
Ton             Seri            43
Ton             Loku            99

我需要一个输出,该输出具有基于学生获得的成绩的每个老师的平均值。看起来像这样,

teacher         student         student grade       teacher Average
Jon             marin           99                  90
Jon             Rob             81                  90
Jon             marly           90                  90
Bon             martin          76                  66
Bon             marie           56                  66
Ton             Seri            43                  71
Ton             Loku            99                  71

得到这个的最短方法是什么?

这是我的方法,但它似乎不起作用。

import pandas as pd
df = pd.read_csv('test.csv', names=['teacher', 'student', 'student grade','Average'])
df.groupby('Star Rating').mean()

【问题讨论】:

标签: python csv pandas data-analysis


【解决方案1】:

使用groupby and transform 构建一个新列,该列的索引与被分组的列相同。

df['teacher average'] = df.groupby('teacher')['student grade'].transform('mean')

【讨论】:

  • 感谢您的回复。它给了我以下错误raise DataError('No numeric types to aggregate') pandas.core.base.DataError: No numeric types to aggregate
  • 这是我的代码,其中“星级”是星星的总数,它是一个数字。将熊猫导入为 pd df = pd.read_csv('test.csv', names=['Date Collected', 'Health Care Provider', 'Specialty', 'Reviewer Name', 'Star Rating', 'How Many Stars', 'Mean Stars','Review Length', 'URL']) df['Mean Stars'] = df.groupby('Health Care Provider')['Star Rating'].transform('mean')
  • 您的“星级”列可能包含字符串。首先将其转换为 int:df['Star Rating'] = df['Star Rating'].astype(int)
  • 很抱歉再次打扰您,我现在收到此错误,ValueError: invalid literal for long() with base 10: 'Star Rating'
  • 您确定您的数据框格式正确吗?似乎一行包含文本标题。
猜你喜欢
  • 2017-03-25
  • 2016-08-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
相关资源
最近更新 更多