【问题标题】:Percentage format does not changes to float - pandas百分比格式不会更改为浮动 - 熊猫
【发布时间】:2020-10-16 12:52:07
【问题描述】:

我在将数据从数据帧转换为百分比格式并将其保留为浮点数时遇到问题。

我准备了一个简单的代码,它反映了我实际项目中的代码:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(0,15,size=(10, 4)), columns=list('ABCD'))
print(df)

cols = df.columns
for col in cols:
    df[col] = df[col].astype(float).map(lambda n: '{:.4%}'.format(n))
print(df)
print(df.dtypes)

在我的实际项目中,我只需要选择包含特定字符串的列并对它们的值进行一些计算。最后,我必须将格式更改为小数点后 4 位的百分比。尽管我使用astype(float)我的值仍然是str。 因此,当我将数据框保存到 excel 文件时,值被粘贴为文本而不是数字。 此外,在从此数据框创建折线图时,我收到错误“不可散列的类型:'numpy.ndarray'。

请告知如何成功地将数据转换为百分比格式并将其保留为浮点数,以便在 excel 文件中准确粘贴并使用 matplotlib 创建折线图。

非常感谢!

【问题讨论】:

    标签: python pandas floating-point percentage


    【解决方案1】:

    我相信这是因为您在 .astype(float) 之后使用了 .format。该代码首先将值转换为浮点数,但由于 format 是一个 str 函数,它被转换为具有 4 个小数位的字符串。您可以尝试执行以下操作:

    df[col] = df[col].map(lambda n: '{:.4%}'.format(n)).astype(float)
    

    您可以尝试在 for 循环中将代码行分成两部分:

    df[col] = df[col].map(lambda n: '{:.4%}'.format(n))
    df[col] = df[col].astype(float)
    

    希望有效!

    【讨论】:

    • 不幸的是,我之前尝试过此选项并收到错误:“无法将字符串转换为浮点数”
    猜你喜欢
    • 2022-07-13
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 2022-08-19
    • 1970-01-01
    • 2019-08-08
    • 2022-11-17
    • 2023-01-26
    相关资源
    最近更新 更多