我有一个DataFrame,第一列是客户进入影院,第二列是名称。
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