J'ai une trame de données convertie du domaine temporel au domaine fréquentiel en utilisant la transformée de Fourier qui a abouti à des valeurs imaginaires/complexes. J'ai besoin de convertir le DataFrame
en flottants afin de pouvoir classer les données. Comment puis-je le convertir?Comment convertir des valeurs de trames de données complexes en flottants dans python 3?
1
A
Répondre
1
df = pd.DataFrame([complex(x,y) for x,y in
zip(np.random.randn(3),np.random.randn(3))])
print(df)
Out:
0
0 (0.815555184453+0.942659258939j)
1 (0.725136694628+0.999826686401j)
2 (0.311981899931+0.309615235755j)
Si vous voulez l'ampleur des nombres complexes, vous pouvez prendre le module (r en coordonnées polaires):
df.applymap(np.absolute)
Out:
0
0 1.246490
1 1.235102
2 0.439539
Si vous souhaitez perdre la partie imaginaire, vous pouvez jeter à flotte:
df.astype(np.float64)
Out:
0
0 0.815555
1 0.725137
2 0.311982
df.applymap (np.absolute) donne une erreur massege: KeyError: ("ufunc 'absolu' ne contenait pas une boucle avec des types correspondant à la signature DTYPE ('
sara
Devinant votre message d'erreur vous avez des champs contenant des chaînes (de longueur 22 caractères). Veuillez fournir des exemples de données de votre problème. –
Si vous souhaitez simplement convertir une colonne de nombres complexes en réels (magnitude), vous pouvez utiliser 'df [colname] .apply (np.absolu)' –