我試圖通過提供一種不同的和手動的方法來計算均值和標準,來爲this question編寫解決方案。使用Groupby Pandas DataFrame手動計算STD
我創建了dataframe as described in the question
a= ["Apple","Banana","Cherry","Apple"]
b= [3,4,7,3]
c= [5,4,1,4]
d= [7,8,3,7]
import pandas as pd
df = pd.DataFrame(index=range(4), columns=list("ABCD"))
df["A"]=a
df["B"]=b
df["C"]=c
df["D"]=d
然後,我創建了一個公司的名單沒有重複。然後我通過將項目分組並每次計算項目來計算解決方案。
import numpy as np
l= list(set(df.A))
df.groupby('A', as_index=False)
listMean=[0]*len(df.C)
listSTD=[0]*len(df.C)
for x in l:
s= np.mean(df[df['A']==x].C.values)
z= [index for index, item in enumerate(df['A'].values) if x==item ]
for i in z:
listMean[i]=s
for x in l:
s= np.std(df[df['A']==x].C.values)
z= [index for index, item in enumerate(df['A'].values) if x==item ]
for i in z:
listSTD[i]=s
df['C']= listMean
df['E']= listSTD
print df
我用describe()
歸類爲「A」來計算均值,標準差。
print df.groupby('A').describe()
並測試了建議的解決方案:
result = df.groupby(['a'], as_index=False).agg(
{'c':['mean','std'],'b':'first', 'd':'first'})
我注意到,我得到了不同的結果,當我計算STD( 「E」)。我只是好奇,我錯過了什麼?
感謝您的解釋;) – user3378649 2014-10-28 11:19:50