python - 如何在 Pandas 数据框中获取列的实部和虚部?
问题描述
import pandas as pd
我有一个数据框:
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
功能?
解决方案
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])
推荐阅读
- javascript - JS 对象更改为 true,仍视为 false
- javascript - Rails:sign_out current_user 不工作?
- sql - equi join 是否返回重复的列
- amazon-web-services - aws 个性化是否支持搜索引擎?
- c# - asp.net 和 c# 在下拉列表中禁用上个月
- python - 从 Jupyter Notebook 连接到 Db2 的问题
- json - jq - 当键/值在不同文件中时组合多个 if 条件
- c# - 在 wpf C# 中禁用自定义父项时启用子控件
- bash - 在 bash 中使用数组来更改每个循环中创建的文件夹的名称
- perl - 詹金斯用反斜杠跑线