Python中导入含x+yj复数的CSV数据计算均值出现TypeError如何修复
问题修复方案
你遇到的报错是因为读取csv时强制指定了dtype='str',所有数据都被加载为字符串类型,无法直接参与数值运算。Python原生支持x+yj格式的复数解析,按以下步骤修改即可:
方案1:读取时直接指定复数类型
如果csv内所有字段都是复数格式,直接修改读文件代码:
import pandas as pd import numpy as np laser1 = pd.read_csv("laser only\\laser only 1.csv", delimiter=',', dtype=np.complex128) laser2 = pd.read_csv("laser only\\laser only 2.csv", delimiter=',', dtype=np.complex128)
读取完成后直接提取列即可正常运算:
lt1 = laser1.values[1:, 0:1] lt2 = laser2.values[1:, 0:1] lt_avg = (lt1 + lt2)/2
方案2:先读取为字符串再转换类型
如果csv内存在其他非复数格式的字段,需要保留dtype='str'的读取配置,提取列后手动做类型转换即可:
# 提取列后转换为复数类型 lt1 = laser1.values[1:, 0:1].astype(np.complex128) lt2 = laser2.values[1:, 0:1].astype(np.complex128) lt_avg = (lt1 + lt2)/2
异常排查
如果转换时报格式错误,先检查对应列的单元格内容,清理掉多余的空格、特殊字符后再做转换即可。
内容的提问来源于stack exchange,提问作者user13831250
相关产品推荐
相关产品推荐

