如何在python中从具有实数的数据框中制作包含复数的数据框?

时间:2018-06-24 20:01:04

标签: python pandas dataframe complex-numbers

在python中,我有一个包含2列实数的数据框。我想输入复数,并将这两列用作新数据集的实部和虚部。我已经尝试过complex(df['wspd'].astype(float),df['wdir'].astype(float)),但仍然收到此错误:

cannot convert the series to <class 'float'>

我该如何实现?

2 个答案:

答案 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的数据类型。