如何自定义复数DataFrame的显示格式?

How do I customize the display format of a DataFrame with complex numbers?

如果我有一个浮点数 DataFrame,我可以使用 pd.options.display.float_format 自定义显示,例如 this answer 中指出的那样。例如:

import pandas as pd
import numpy as np
pd.options.display.float_format = '{:,.2f}'.format
pd.DataFrame(np.random.randn(2, 2))

这会给我预期的结果:

另一方面,如果我在 DataFrame 包含 complex 浮点数时尝试相同的方法,这将不起作用:

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))

产生:

我在 relevant docs 中没有看到任何具体提及复数,并且 '{:,.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

我是 python 的新手,但是我发现了这个并且我喜欢输出

import pandas as pd

pd.set_option('display.float_format', '{:,.0f}'.format)

在此选项中,您可以使用 pd.set_option 以获得所需的输出

display.float_format 不适用于复数。

display.precision 适用于浮点数和复数值。

例如:pd.set_option("display.precision", 3))