我是pandas数据分析库的新手。我需要完成的任务如下:
给定具有一组列C
的数据框(表),选择列A
的子集中的值相同的所有行,并将它们组合到一行中其他行C \ A
的值是平均值。
(目标是测试程序的多次运行,并在参数相同的情况下平均值,如运行时间。)
例如:
a b c d
eggs ham 1.0 0.0
eggs ham 0.0 0.5
spam eggs 0.0 1.0
spam eggs 0.0 1.0
应合并到:
a b c d
eggs ham 0.5 0.25
spam eggs 0.0 1.0
选择列a
和b
时(这意味着c
和d
应该被平均)。
我有什么选择?
答案 0 :(得分:6)
这就是groupby的作用
http://pandas.pydata.org/pandas-docs/stable/groupby.html
from StringIO import StringIO
txt = """a b c d
eggs ham 1.0 0.0
eggs ham 0.0 0.5
spam eggs 0.0 1.0
spam eggs 0.0 1.0"""
df = pd.read_csv(StringIO(txt), sep="\\s+")
df.groupby(["a","b"], as_index=False).mean()