Если у меня есть DataFrame из float, я могу настроить отображение с помощью pd.options.display.float_format
, как, например, указано в этом ответе. Например:
import pandas as pd
import numpy as np
pd.options.display.float_format = '{:,.2f}'.format
pd.DataFrame(np.random.randn(2, 2))
Который даст мне ожидаемый результат:
С другой стороны, если я пытаюсь сделать то же самое, когда DataFrame содержит сложные поплавки, это не работает:
import pandas as pd
import numpy as np
pd.options.display.float_format = '{:,.2f}'.format
pd.DataFrame(np.random.randn(2, 2) + 1j * np.random.randn(2, 2))
производит:
Я не вижу конкретного упоминания комплексных чисел в соответствующих документах и '{:,.2f}'.format(np.complex(1.12345 + 1j *.8746234))
правильно обрезает действительную и мнимую часть комплексного числа, так почему же это не работает?
Это один из способов получения желаемого результата с помощью applymap, он будет использовать ячейку.
pd.DataFrame(np.random.randn(2, 2) + 1j * np.random.randn(2, 2)).applymap(lambda x: '{:,.2f}'.format(x))
Выход:
0 1
0 1.10-1.15j 0.49+0.65j
1 0.51+1.39j -0.92-0.07j