1
我試圖存儲FFT計算的熊貓數據幀的結果:存儲在熊貓數據幀FFT週期時奇怪的問題
ft = pd.DataFrame(index=range(90))
ft['y'] = ft.index.map(lambda x: np.sin(2*x))
ft['spectrum'] = np.fft.fft(ft['y'])
ft['freq'] = np.fft.fftfreq(len(ft.index)).real
ft['T'] = ft['freq'].apply(lambda f: 1/f if f != 0 else 0)
一切似乎是工作的罰款,直到最後一行:列t內應該存儲期限由於某種原因的所有列的框架,即:
In [499]: ft.T[0]
Out[499]:
y 0j
spectrum (0.913756021471+0j)
freq 0j
T 0j
Name: 0, dtype: complex128
我不明白爲什麼是這樣的。它發生同樣,當我只需要頻率的實部:
ft['freq'] = np.fft.fftfreq(len(ft.index)).real
或我嘗試計算牛逼值使用替代方法,如:
ft.T = ft.index.map(lambda i: 1/ft.freq[i] if ft.freq[i] else np.inf)
ft.T = 1/ft.freq
所有其他列看起來整潔當我運行head()
或describe()
無論它們是否包含真實或複雜的值。頻率列看起來像一個普通的1D系列,因爲np.fft.fftfreq()
返回一維數組的複數,所以可能是列T被搞亂的原因是什麼?
我使用熊貓訴1.19.2和Numpy訴1.12.0。
我知道這一定是愚蠢的我的一部分:)感謝您的快速反應。 – mac13k