Здесь необходимо назначить вывод переменной, поскольку 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
EDIT: для разделения комплексных чисел на 2 кадра данных используйте numpy.real
и 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