擅长:python、mysql、java
<p>解决方案的主要复杂性是不存在<code>mean</code>的<code>mean</code>,因此有必要根据定义创建<code>mean</code>——它是<code>sum</code>的和除以<code>count</code>的和</p>
<p>因此,首先使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.agg.html" rel="nofollow noreferrer">^{<cd6>}</a>获得每行的聚合,而不是<code>mean</code>使用<code>sum</code>和<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.size.html" rel="nofollow noreferrer">^{<cd9>}</a>,然后聚合<code>sum</code>、<code>min</code>和<code>max</code>,最后为<code>mean</code>划分列:</p>
<pre><code>cols = df.filter(like='Time').columns
df1 = df[cols].agg(['sum','size','min','max'], axis=1)
df = df1.groupby(df['QID']).agg(m1=('sum','sum'),
m2=('size','sum'),
Min=('min','min'),
Max=('max','max'))
df = df.assign(Mean=df.pop('m1').div(df.pop('m2'))).reset_index()
print (df)
QID Min Max Mean
0 1 10 34 21.333333
1 2 23 60 36.666667
</code></pre>