百分比格式不会更改为浮动-熊猫

问题描述

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

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

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创建折线图。

非常感谢!

解决方法

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

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

OR

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

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

希望有效!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...