如何在 Pandas 数据框中获取列的实部和虚部?

zab*_*bop 6 python pandas

import pandas as pd
Run Code Online (Sandbox Code Playgroud)

我有一个数据框:

df=pd.DataFrame({'cmplxnumbers':[1+1j,2-2j,3*(1+1j)]})
Run Code Online (Sandbox Code Playgroud)

我需要获取列中数字的虚部。

我这样做:

df.cmplxnumbers.apply(lambda number: number.imag)
Run Code Online (Sandbox Code Playgroud)

结果我得到:

0    1.0
1   -2.0
2    3.0
Name: cmplxnumbers, dtype: float64
Run Code Online (Sandbox Code Playgroud)

正如预期的那样。

有没有更快、更直接的方法,也许不涉及lambda函数?

Qua*_*ang 5

Pandas DataFrame/Series 建立在 numpy 数组之上,因此它们可以传递给大多数 numpy 函数。

在这种情况下,您可以尝试以下操作,这应该比非矢量化更快.apply

df['imag'] = np.imag(df.cmplxnumbers)
df['real'] = np.real(df.cmplxnumbers)
Run Code Online (Sandbox Code Playgroud)

输出:

         cmplxnumbers  imag  real
0  1.000000+1.000000j   1.0   1.0
1  2.000000-2.000000j  -2.0   2.0
2  3.000000+3.000000j   3.0   3.0
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做agg

df[['real','imag']] = df.cmplxnumbers.agg([np.real, np.imag])
Run Code Online (Sandbox Code Playgroud)