首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >百分比格式不会更改为float - pandas

百分比格式不会更改为float - pandas
EN

Stack Overflow用户
提问于 2020-10-16 20:52:08
回答 1查看 49关注 0票数 1

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

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

代码语言:javascript
运行
复制
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。因此,当我将dataframe保存到excel文件时,值被粘贴为文本而不是数字。此外,在从这个数据帧创建折线图时,我得到一个错误'unhashable type:'numpy.ndarray‘。

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

非常感谢!

EN

Stack Overflow用户

发布于 2020-10-16 21:05:13

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

代码语言:javascript
运行
复制
df[col] = df[col].map(lambda n: '{:.4%}'.format(n)).astype(float)

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

代码语言:javascript
运行
复制
df[col] = df[col].map(lambda n: '{:.4%}'.format(n))
df[col] = df[col].astype(float)

希望这能起作用!

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64389558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档