如何在Pandas Dataframe 中获得列的真实的部和虚部?

6jygbczu  于 2023-03-11  发布在  其他
关注(0)|答案(2)|浏览(106)
import pandas as pd

我有一个 Dataframe :

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

我需要得到列中数字的虚部。
我是这样做的:

df.cmplxnumbers.apply(lambda number: number.imag)

我得到的结果是:

0    1.0
1   -2.0
2    3.0
Name: cmplxnumbers, dtype: float64

这是意料之中的。
有没有更快、更直接的方法,也许不涉及lambda函数?

brc7rcf0

brc7rcf01#

Pandas DataFrame/Series构建在numpy数组之上,因此它们可以传递给大多数numpy函数。
在这种情况下,您可以尝试执行以下操作,这应该比非矢量化的.apply更快:

df['imag'] = np.imag(df.cmplxnumbers)
df['real'] = np.real(df.cmplxnumbers)

输出:

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

或者你可以做agg

df[['real','imag']] = df.cmplxnumbers.agg([np.real, np.imag])
y53ybaqx

y53ybaqx2#

使用Pandas对象的.to_numpy()方法获取NumPy数组,该数组包含realimag字段。

real_part = pd_obj.to_numpy().real
imag_part = pd_obj.to_numpy().imag

请参见here,其中讨论了.values.array.to_numpy()

相关问题