我在一次采访中遇到了这个问题,想不出解决办法.这就是问题所在,假设您有一个数据集,如下所示(它超出了时间2,但这只是一个要使用的样本):
import pandas as pd
data = pd.DataFrame({
'time': [1, 1, 1, 2, 2, 2],
'names': ["Andy", "Bob", "Karen", "Andy", "Matt", "Sim"],
'val': [1, 2, 3, 5, 6, 8]
})
编写一个函数来计算每个时间点之前的平均值,但不计算重复的名字.也就是说,时间1的平均值是(1+2+3)/3,时间2的平均值不包括安迪的第一个值‘1’,我只包括最近的值,所以时间2的平均值是(2+3+5+6+8)/5.
我试着创建了两个词典,一个用来存储"时间"计数,另一个用来记录"名字"和"价值",但我不知道如何从那里着手,也不知道如何想出一个有效的解决方案,所以我不会在每一步重新计算手段(这是面试的另一项要求).
它不一定是Pandas 解决方案,数据表单可以是您喜欢的任何形式.我只是把它作为Pandas 的df呈现出来.