我尝试根据Multiindex将矩阵放入特定位置的数据框中。
我有一个带有多索引的数据框。 使用groupby,我基于子集创建一个矩阵。现在,我想将矩阵(与子集的长度不相等)放入新列中
我的数据框:
col = ['loc', 'mass', 'time', 'signal']
loc = ['loc1'] * 10+['loc2'] * 10
mass = (['10kg']*5+['20kg']*5)*2
time = list(range(0,5))*4
ampl = list(np.random.rand(5))*4
a= [loc,mass,time,ampl]
pf = pd.DataFrame(a, index=col).T
pfi=pf.set_index(['loc','mass'])
pfi['freq'], pfi['ampl'] = np.nan,np.nan
pfi
def fft_two(a,args):
n = args[0]
b =[]
for i in range(len(a)//2):
b.append(a[i]+a[-i])
return [b,[n]*len(b)]
for grp in pfi.groupby(["loc", "mass"]):
l = grp[1]['signal'].values
f = np.asmatrix(fft_two(l,args=(4,))).T
f = pd.DataFrame(f, columns=['ampl','freq'])
pfi_.loc[grp[0],['freq','ampl']]=f
但它不会更改列的nan值