我有一个按熊猫分组的数据帧:
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
如何解决这个问题?你知道吗
有点冗长的解决方案,但很有效:
使用^{} 和} 和^{} 创建的
ascending=False
作为计数器,使用^{MultiIndex
:编辑:
如果多索引
DataFrame
:相关问题 更多 >
编程相关推荐