Pandas apply не работает при использовании np.fft.fft - PullRequest
1 голос
/ 19 марта 2020

Привет, у меня есть датафрейм, скажем df_input. Я пытаюсь применить fft в каждом столбце данных. Но результат в том, что в фрейме данных нет никаких изменений.

Вот что я попробовал

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

В чем причина, это не работает. Любая помощь приветствуется!

1 Ответ

2 голосов
/ 19 марта 2020

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