【发布时间】:2019-09-08 09:25:36
【问题描述】:
我有一个按 Pandas 分组的数据框:
id date temperature
1 2011-9-12 12
2011-9-12 20
2011-9-18 12
2011-9-19 90
2 2011-9-12 15
3 2011-9-12 15
2011-9-16 15
这里,每个id都有不同数量的温度记录。
我想修复它们,比如每个 id 的平均记录数(比如 3 个)。如果缺少某些记录,我想一开始就输入零。
我想保留最近的记录。
即我的最终数据框应该是:
id temperature
1 20
12
90
2 0
0
15
3 0
15
15
这是在线给出错误的numpy代码:
s=df.groupby(level=0)['temperature'].apply(list)
s1=s.tolist()
arr = np.zeros((len(s1),3),int)
lens = [3-len(l) for l in s1]
mask = np.arange(3) >=np.array(lens)[:,None]
arr[mask] = np.concatenate(s1) ## Error
pd.DataFrame({'id':s.index.repeat(3),'temperature':arr.ravel()})
我怀疑这个错误是由于我的数据可能有超过 3 行的 id。
如何解决这个问题?
【问题讨论】:
-
您想要随机 n 条记录还是唯一记录?
-
@AkshayNevrekar 我想保留最近的 n 条(比如 3 条)记录,如果不可行,则将 0 放在上面的示例中。谢谢,我已经编辑了问题以避免混淆。
标签: python pandas numpy pandas-groupby