相关疑难解决方法(0)

Python float - str - float怪异

>>> float(str(0.65000000000000002))

0.65000000000000002

>>> float(str(0.47000000000000003))

0.46999999999999997     ???
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?如何转换0.47000000000000003为字符串并将结果值恢复为浮点数?

我在Windows上使用Python 2.5.4.

python string floating-point floating-accuracy ieee-754

10
推荐指数
1
解决办法
6068
查看次数

Pandas float64 到 float 32 ,然后数据发生变化

我有一个包含一些浮点数据的 csv 文件。代码很简单

df = pd.read_csv(my_csv_vile)
print(df.iloc[:2,:4]
600663.XSHG  000877.XSHE  600523.XSHG  601311.XSHG
2016-01-04 09:31:00        49.40         8.05        22.79        21.80
2016-01-04 09:32:00        49.55         8.03        22.79        21.75
Run Code Online (Sandbox Code Playgroud)

然后我将其转换为 float32 以节省内存使用。

short_df = df.astype(np.float32)
print(short_df.iloc[:2,:4])
600663.XSHG  000877.XSHE  600523.XSHG  601311.XSHG
2016-01-04 09:31:00    49.400002         8.05    22.790001    21.799999
2016-01-04 09:32:00    49.549999         8.03    22.790001    21.750000
Run Code Online (Sandbox Code Playgroud)

值刚刚改变!如何才能保持数据不变呢?

(我也尝试过short_df.round(2),但打印仍然得到相同的输出)

python numpy pandas

4
推荐指数
1
解决办法
1万
查看次数

使用熊猫“to_csv”防止尾随零

我正在尝试将 CSV 字符串导出到 D3 Web 应用程序,但该命令to_csv坚持向数据添加尾随 0,这阻止了 D3 的正确使用。

这是一个说明问题的最小示例。

我的(简化的)数据框是:

>>> df = pd.DataFrame([['Alex',20.0000, 50.650]],columns=['Name','Age', 'Weight'])
   Name   Age  Weight
0  Alex  20.0   50.65
Run Code Online (Sandbox Code Playgroud)

df['Age']包含 a float,如下所示:

>>> df['Age']
0    20.0
Name: Age, dtype: float64
Run Code Online (Sandbox Code Playgroud)

然后根据这个答案,我运行.astype(object)以获得我想要的格式:

>>> df=df.astype(object)
   Name Age Weight
0  Alex  20  50.65
Run Code Online (Sandbox Code Playgroud)

现在,df['Age']包含一个object, 没有尾随零:

>>> df['Age']
0    20
Name: Age, dtype: object
Run Code Online (Sandbox Code Playgroud)

这就是我想用 导出的内容to_csv,但此命令会在数字后重新附加一个尾随 0,我想避免这种情况:

>>> df_csv = df.to_csv(sep=',', index = False)
>>> …
Run Code Online (Sandbox Code Playgroud)

python casting dataframe pandas d3.js

4
推荐指数
1
解决办法
3492
查看次数