【问题标题】:Pandas apply doesnt seem to work while using np.fft.fft使用 np.fft.fft 时,熊猫应用似乎不起作用
【发布时间】:2020-03-19 06:04:35
【问题描述】:

您好,我有一个数据框,例如 df_input。我正在尝试在数据框的每一列中应用fft。 但结果是数据框没有任何变化。

这是我尝试过的

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

什么原因,没用。任何帮助表示赞赏!

【问题讨论】:

  • apply 不会修改 DataFrame。它创建一个新的 DataFrame 或 Series。

标签: python pandas numpy fft apply


【解决方案1】:

这里有必要将输出分配给变量,因为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.realnumpy.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

【讨论】:

  • 哦该死的,文档显示了一个他们没有分配的示例。谢谢!
  • 顺便说一句,是否可以将真实部分和复杂部分分开并获得数据框?
  • 太棒了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
  • 2019-05-15
  • 2018-08-29
  • 1970-01-01
  • 2017-12-31
  • 1970-01-01
相关资源
最近更新 更多