Как преобразовать сложные значения фрейма данных в числа с плавающей запятой в python 3?

У меня есть кадр данных, преобразованный из временной области в частотную область с использованием преобразования Фурье, что привело к мнимым/комплексным значениям. Мне нужно преобразовать DataFrame в числа с плавающей запятой, чтобы иметь возможность классифицировать данные. Как я могу преобразовать его?


person sara    schedule 06.10.2017    source источник


Ответы (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)

Если вам нужна величина комплексных чисел, вы можете взять модуль (r в полярных координатах):

df.applymap(np.absolute)

Out:
          0
0  1.246490
1  1.235102
2  0.439539

Если вы хотите потерять воображаемый компонент, вы можете перевести его в число с плавающей запятой:

df.astype(np.float64)

Out:
          0
0  0.815555
1  0.725137
2  0.311982
person Seiji Armstrong    schedule 06.10.2017
comment
df.applymap(np.absolute) выдает сообщение об ошибке: KeyError: (ufunc 'absolute' не содержит цикла с совпадающими сигнатурами типов dtype('‹U22') dtype('‹U22'), 'произошло по индексу 0' ) - person sara; 07.10.2017
comment
Судя по вашему сообщению об ошибке, у вас есть поля, содержащие строки (длиной 22 символа). Пожалуйста, предоставьте пример данных вашей проблемы. - person Seiji Armstrong; 08.10.2017
comment
Если вы просто хотите перевести один столбец комплексных чисел в вещественные числа (величину), вы можете использовать df[colname].apply(np.absolute) - person Seiji Armstrong; 08.10.2017
comment
df.applymap(np.absolute). работал! и преобразовал весь фрейм данных. Спасибо - person sara; 08.10.2017