Python将包含科学值和浮点值的熊猫数据框与浮点数相乘
Posted
技术标签:
【中文标题】Python将包含科学值和浮点值的熊猫数据框与浮点数相乘【英文标题】:Python mutiply pandas dataframe containing scientific and float values with a float 【发布时间】:2021-04-16 18:06:12 【问题描述】:import pandas as pd
df=pd.DataFrame(‘years’:[‘Y0’,‘Y1’,’Y2’,’Y3’],‘price1’:[0.01, 0.0029,0.00368,0.00439536],
‘price2’:[0.02, 0.001, 9.161781253394068e-04,0.001718])
df.iloc[1:,1:] = df.iloc[1:,1:].mul(0.75)
由于 df 中的科学值而出现错误,如果有人有任何建议或帮助解决此问题,请告诉我?
错误:
TypeError: Could not operate 0.75 with block values can’t multiply sequence by non-int of type ‘float’
【问题讨论】:
我无法重现错误:( 您可以尝试使用这些值从 csv 文件加载到 df,然后在相乘时会出错 @Peterdf.dtypes
的输出是什么?
【参考方案1】:
你可以试试下面的方法吗?
df=pd.DataFrame("years":["Y0","Y1","Y2","Y3"],
"price1":[0.01, 0.0029,0.00368,0.00439536],
"price2":[0.02, 0.001, float("9.161781253394068e-04"),0.001718])
df.iloc[1:,1:] = df.iloc[1:,1:].mul(0.75)
【讨论】:
谢谢 berkayln,科学记数法值可以出现在 df 中的任何位置。那么有没有办法将整个数据框转换为浮动,除了第一行和第一列 是的:df.astype('price1': 'float64',"price2":"float64") 但这仍然会将 price1, price 2 中的第一行转换为浮动,但我不希望它们浮动,因为它们在我的应用程序中使用特定格式,所以任何简单的方法都可以做到这一点 0.01 已经是浮男了:D 我实在看不懂。【参考方案2】:我猜你遇到这个问题是因为类型。您可以尝试将列转换为浮点类型-
import pandas as pd
df=pd.DataFrame('years':['Y0','Y1','Y2','Y3'],'price1':[0.01, 0.0029,0.00368,0.00439536], 'price2':[0.02, 0.001, 9.161781253394068e-04,0.001718])
# converting dtype
df['price1'] = pd.to_numeric(df['price1'], errors='coerce')
df['price2'] = pd.to_numeric(df['price2'], errors='coerce')
df.iloc[1:,1:] = df.iloc[1:,1:].mul(0.75)
【讨论】:
以上是关于Python将包含科学值和浮点值的熊猫数据框与浮点数相乘的主要内容,如果未能解决你的问题,请参考以下文章
删除 kotlin android 中浮点值的科学记数法格式
对于包含无效值的数据集,我应该使用浮点的 NaN 还是浮点 + bool?