【问题标题】:How to convert complex data frame values to floats in python 3?如何在 python 3 中将复杂的数据框值转换为浮点数?
【发布时间】:2017-10-07 13:21:04
【问题描述】:

我有一个使用傅里叶变换从时域转换到频域的数据帧,这会产生虚数/复数值。我需要将DataFrame 转换为浮点数以便能够对数据进行分类。 我怎样才能转换它?

【问题讨论】:

    标签: python python-3.x pandas floating-point complextype


    【解决方案1】:
    df = pd.DataFrame([complex(x,y) for x,y in 
              zip(np.random.randn(3),np.random.randn(3))])
    print(df)
    
    Out:
                                      0
    0  (0.815555184453+0.942659258939j)
    1  (0.725136694628+0.999826686401j)
    2  (0.311981899931+0.309615235755j)
    

    如果您想要复数的大小,可以取模数(极坐标中的 r):

    df.applymap(np.absolute)
    
    Out:
              0
    0  1.246490
    1  1.235102
    2  0.439539
    

    如果您想丢失可以转换为浮点数的虚构组件:

    df.astype(np.float64)
    
    Out:
              0
    0  0.815555
    1  0.725137
    2  0.311982
    

    【讨论】:

    • df.applymap(np.absolute) 给出错误消息: KeyError: ("ufunc 'absolute' did not contain a loop with signature matching types dtype('
    • 从您的错误消息中猜测您有包含字符串(长度为 22 个字符)的字段。请提供您的问题的示例数据。
    • 如果您只想将一列复数转换为实数(幅度),您可以使用df[colname].apply(np.absolute)
    • df.applymap(np.absolute)。工作!并转换整个数据框。谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2021-02-21
    • 2023-03-12
    • 1970-01-01
    • 2019-01-11
    • 2021-04-15
    • 1970-01-01
    相关资源
    最近更新 更多