【发布时间】:2016-06-17 20:51:37
【问题描述】:
我有一个列表列表,每个列表都有“row id”、“team name”、“team number”、“scout”、“score”:
teams = [[23L, u'team1', 5713L, u'Gange', 144L],
[22L, u'team3', 1406L, u'Gange', 126L],
[15L, u'team2', 7319L, u'Bob Loblaw', 90L],
[17L, u'team2', 7319L, u'Gange', 54L],
[18L, u'team1', 5713L, u'Bob Loblaw', 69L],
[16L, u'team3', 1406L, u'Bob Loblaw', 113L]]
我想首先按“团队编号”值对数据进行分组,然后按团队获取“分数”值的最小/平均/最大值。通过使用这些函数,我可以使用 pandas 单独获取所有这些信息:
res = pd.DataFrame(teams)
res.columns = ['id', 'name', 'number', 'scout', 'score']
print res.groupby('number')['score'].min()
print res.groupby('number')['score'].mean()
print res.groupby('number')['score'].max()
number
406 0
5703 9
7129 18
Name: score, dtype: int64
number
406 9.0
5703 22.5
7129 27.0
Name: score, dtype: float64
number
406 18
5703 36
7129 36
Name: score, dtype: int64
我的问题是我想保留除分数之外的所有原始列,有效地将每个团队的行折叠成一行,并将分数列替换为具有最小值、平均值、最大值的行的列表/元组同一个团队,但要将其输出到 python 对象,我可以将其传递给一个表单,我不确定 pandas 是否是最好的模块。
我查看了一些带有 itertools、pandas、numpy 等的示例,但我现在正在兜圈子,不知道如何解决这个问题。提前感谢您的任何建议。
【问题讨论】:
-
您能否提供所需输出的示例?从你的描述看不是很清楚。您说您希望每个团队都有一行(使用元组表示得分,这没问题),但看起来现有团队行在同一团队中可以具有不同的 scout 值(例如第一行和第五行)。你想怎么处理?
-
好点,我应该提到侦察员对于汇总数据并不重要。很抱歉造成混乱。
标签: python python-2.7 pandas