Pandas 使用 np.fft.fft 时应用似乎不起作用

Pandas apply doesnt seem to work while using np.fft.fft

嗨,我有一个数据框 df_input。我正在尝试在数据框的每一列中应用 fft 。 但结果是数据帧没有变化。

这是我试过的

df_input.apply(np.fft.fft,axis=0)

什么原因,没用。感谢任何帮助!

这里需要将输出赋值给变量,因为apply不能原地工作,而且axis=0是默认参数,所以应该省略:

df_input = pd.DataFrame({
         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],
})

df = df_input.apply(np.fft.fft)
print (df)
                     B                    C                    D  \
0  27.000000+0.000000j  33.000000+0.000000j  17.000000+0.000000j   
1  -1.000000+0.000000j  3.000000-10.392305j  -7.500000-6.062178j   
2   0.000000-1.732051j   0.000000+1.732051j   3.500000+0.866025j   
3  -1.000000+0.000000j   3.000000+0.000000j  -3.000000+0.000000j   
4   0.000000+1.732051j   0.000000-1.732051j   3.500000-0.866025j   
5  -1.000000+0.000000j  3.000000+10.392305j  -7.500000+6.062178j   

                     E  
0  29.000000+0.000000j  
1  -4.500000-2.598076j  
2   6.500000+4.330127j  
3  -3.000000+0.000000j  
4   6.500000-4.330127j  
5  -4.500000+2.598076j  

编辑:要将复数拆分为 2 个数据帧,请使用 numpy.real and numpy.imag

df1 = pd.DataFrame(np.real(df), index=df.index, columns=df.columns)
print (df1)
      B     C     D     E
0  27.0  33.0  17.0  29.0
1  -1.0   3.0  -7.5  -4.5
2   0.0   0.0   3.5   6.5
3  -1.0   3.0  -3.0  -3.0
4   0.0   0.0   3.5   6.5
5  -1.0   3.0  -7.5  -4.5

df2 = pd.DataFrame(np.imag(df), index=df.index, columns=df.columns)
print (df2)
          B          C         D         E
0  0.000000   0.000000  0.000000  0.000000
1  0.000000 -10.392305 -6.062178 -2.598076
2 -1.732051   1.732051  0.866025  4.330127
3  0.000000   0.000000  0.000000  0.000000
4  1.732051  -1.732051 -0.866025 -4.330127
5  0.000000  10.392305  6.062178  2.598076