You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取Pandas DataFrame中所有复数元素的实部?

复数DataFrame实部提取方案

操作失效的核心原因是当前DataFrame的元素为object类型的复数对象,而非pandas原生支持的complex数值类型,相关函数无法自动识别逐元素处理,可选用以下两种方法解决:

方法1:逐元素处理(小数据量适用)

使用applymap对每个单元格单独执行实部提取操作:

df_real = df_test.applymap(np.real)

方法2:转换类型后批量提取(大数据量性能更优)

先将整个DataFrame转换为复数数值类型,再直接批量提取实部:

# 转换为complex128复数类型
df_complex = df_test.astype('complex128')
# 提取实部并保留原索引、列名
df_real = pd.DataFrame(df_complex.values.real, index=df_complex.index, columns=df_complex.columns)

之前操作失效原因说明

  • 直接调用np.real(df_test)时,numpy将object类型的DataFrame识别为普通对象数组,不会逐元素解析复数结构,因此返回结果仍保留完整复数形式
  • 调用df_test.apply(lambda x: np.real(x))时,apply传入的参数x是整列Series对象,numpy对object类型的Series执行real操作不会触发逐元素计算,因此结果无变化
  • 调用df_test.apply(lambda x: x.real)时,x是Series对象,本身没有real属性,只有复数类型的标量或复数dtype的Series才有该属性,因此执行报错

内容的提问来源于stack exchange,提问作者gravedigger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:45:01