2015-04-26 141 views
0

我有一個DataFrame,其中第一列是當客戶進入劇院,第二列是名稱。Python熊貓速度

time name 
1  A 
2  A 
3  A 
4  B 
5  B 
6  C 
7  B 
8  C 

我想獲得客戶入口的平均時間(忽略客戶必須離開才能再次進入的事實)。

我想組由數據幀

df.groupby(['name']).agg({'time' : my_function()}) 

其中

def my_function(): 
    for j in range(1,len(time)): 
     total = total + time[j] - time[i] 
     i = i + 1 
    return total/(len(time)-1) 
+0

你期待這是什麼? –

回答

1

我認爲你正試圖採取倍的平均差值:

In [11]: g = df.groupby('name') 

In [12]: g['time'].apply(lambda x: x.diff().mean()) 
Out[12]: 
name 
A 1.0 
B 1.5 
C 2.0 
Name: time, dtype: float64 

編輯:我不確定你是想要這個還是簡單的意思:

In [13]: g['time'].mean() 
Out[13]: 
name 
A 2.000000 
B 5.333333 
C 7.000000 
Name: time, dtype: float64 
+0

謝謝。有用。但是如果我需要將'時間'作爲參數傳遞給用戶定義的函數呢?函數在參數時間中給出結果。是否有可能實現diff()? – GauravP

+0

@GauravP in apply/agg該函數需要取得subDataFrame /每個組。 tbh我對你想要做的事情有點困惑:s –