基于多索引将矩阵添加到数据框

时间:2019-03-29 15:49:57

标签: python-3.x pandas

我尝试根据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值

0 个答案:

没有答案