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
嗨,我有一个数据框 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