に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
つまり、なぜ私が把握することはできません。私はFREQの実部を取るときにも発生:
ft['freq'] = np.fft.fftfreq(len(ft.index)).real
またはIのような別の方法、使用してTの値を計算しよう:私はhead()
を実行したときに
ft.T = ft.index.map(lambda i: 1/ft.freq[i] if ft.freq[i] else np.inf)
ft.T = 1/ft.freq
他のすべての列がきちんと見えます実数値または複素数値を含むかどうかにかかわらず、describe()
はその上にありません。 np.fft.fftfreq()
は1Dの複素数の配列を返すので、freqの列は通常の1D系列のように見えます。なぜ列Tがうんざりするのでしょうか?
私はPandas v。1.19.2とNumpy v。1.12.0を使用しています。
私はそれが私の部分に何かばかげたであろうことを知っていた:)クイック応答ありがとう。 – mac13k