Python 科学数字中的四舍五入
你好,我有一个df,例如:Python 科学数字中的四舍五入,python,pandas,dataframe,Python,Pandas,Dataframe,你好,我有一个df,例如: COL1 COL2 0.005554 0.35200000000000004 5.622e-11 0.267 0.006999999999999999 0.307 2.129e-14 0.469 2.604e-14 0.39 1.395e-60 0.27899999999999997 8.589999999999998e-74 0.29600000000000004 1.025e-42 0.42700000000000
COL1 COL2
0.005554 0.35200000000000004
5.622e-11 0.267
0.006999999999999999 0.307
2.129e-14 0.469
2.604e-14 0.39
1.395e-60 0.27899999999999997
8.589999999999998e-74 0.29600000000000004
1.025e-42 0.4270000000000001
我不知道如何使用
df['COL2'] = df['COL2'].round(3)
但是如果我对COL1执行相同的操作,它只显示0
我怎样才能取而代之:
COL1 COL2
0.005 0.352
5.622e-11 0.267
0.007 0.307
2.129e-14 0.469
2.604e-14 0.39
1.395e-60 0.279
8.560e-74 0.296
1.025e-42 0.427
事实上,最大的问题在于:
它显示:8.5899999998E-74
昏迷后我只想留下3个号码
8.590e-74
结果数据帧的第1行和第3行是否也为0?
因为当四舍五入到第三位小数时,所有其他行都是0,因为5.622e-11是0.00000000005622,所以四舍五入到3位小数,它是0。结果数据帧的第1行和第3行也是0吗?
因为当四舍五入到第三个小数点时,所有其他行都是0,因为5.622e-11是0.00000000005622,所以四舍五入到3个小数点,它是0。假设您只想为了显示目的而这样做,您可以设置
pd.options.display.precision=3
打印(df)
或仅在临时情况下这样做:
带有pd.option\u上下文('display.precision',3):
打印(df)
假设您只想出于显示目的执行此操作,您可以设置
pd.options.display.precision=3
打印(df)
或仅在临时情况下这样做:
带有pd.option\u上下文('display.precision',3):
打印(df)
您不想对第一列中的值进行四舍五入-四舍五入意味着较低的数字消失了。我认为您实际上想要做的是改变Pandas在屏幕上显示数据的方式,而不是改变dataframe中的实际值。默认值已经是科学符号
您可以指定所有列的显示格式,如下所示(这将显示点后的前三位数字):
由于要保留第一列的格式,而不是第二列的格式,因此可能需要分别设置每列的格式。您可以对第2列使用:
df.style.format({'COL2': '{:.3f}')
编辑:因为您的答案是保存到CSV,所以您需要将其作为参数传递给
到_CSV
:float_format='{.3E}'
。这将以科学记数法保存所有列。如果您只想对第1列执行此操作,可以尝试解决方法。您不想对第一列中的值进行舍入-舍入意味着较低的数字消失了。我认为您实际上想要做的是改变Pandas在屏幕上显示数据的方式,而不是改变dataframe中的实际值。默认值已经是科学符号
您可以指定所有列的显示格式,如下所示(这将显示点后的前三位数字):
由于要保留第一列的格式,而不是第二列的格式,因此可能需要分别设置每列的格式。您可以对第2列使用:
df.style.format({'COL2': '{:.3f}')
编辑:因为您的答案是保存到CSV,所以您需要将其作为参数传递给
到_CSV
:float_format='{.3E}'
。这将以科学记数法保存所有列。如果您只想在第1列中使用此选项,您可以尝试解决方案。这更像是一个注释。请考虑在这个问题上重新定位。这是我最初想要做的,但是我的名声仍然很低。这是一个评论。请考虑在这样的问题下重新定位它。这是我最初想要做的,但是我的名声仍然很低。我需要在使用ToSyCSV之后保存数据文件,所以它不是为了显示需要使用ToSyCSV保存数据文件,所以它不是用于显示的。