在python中,我有一个包含2列实数的数据框。我想输入复数,并将这两列用作新数据集的实部和虚部。我已经尝试过complex(df['wspd'].astype(float),df['wdir'].astype(float))
,但仍然收到此错误:
cannot convert the series to <class 'float'>
我该如何实现?
答案 0 :(得分:4)
函数complex
只能处理标量。您可以将第二列转换为虚数乘以1j
,然后求和:
df['wspd'] + df['wdir'] * 1j
示例:
df = pd.DataFrame({'wspd':[10.23,2.4,30.6], 'wdir':[2.3,7.8,4]})
df['com'] = df['wspd'] + df['wdir'] * 1j
print (df)
wspd wdir com
0 10.23 2.3 (10.23+2.3j)
1 2.40 7.8 (2.4+7.8j)
2 30.60 4.0 (30.6+4j)
答案 1 :(得分:0)
另一种方法是以这种方式从df2
创建新的数据帧df
:
df2 = pd.DataFrame([complex(i.wspd, i.wdir) for i in df.iloc], index=df.index)
数据帧的.iloc(基于int的索引)和.loc(基于标签的索引)对象属性是可迭代的,因此可以通过这种方式使用。
python本机复杂函数的替代方法是使用numpy.complex,我不确定哪个更快,也许是numpy函数,因为熊猫继承了numpy的数据类型。