使用`pd.read_csv`读取CSV时,小数位会发生变化(Pandas)

时间:2017-08-03 00:44:29

标签: python excel pandas csv dataframe

excel = pd.read_csv("EH_damages.csv")

您好! 我使用上面的代码将csv文件读入python。但原始Excel中的0.289798953已更改为0.289799。即使我在excel中将数字保存到文本模式,python仍然将其读取为float,并且数字的位数较少,如0.289799

我的代码出了什么问题?谢谢!!

1 个答案:

答案 0 :(得分:3)

并非所有小数都可以由浮点数精确表示,但似乎并非如此 是这里的主要问题。您所看到的仅仅是Pandas格式化的方式 打印时默认使用DataFrames。存储在DataFrame中的实际浮点数 可能有更多的数字。

例如,使用此DataFrame:

import pandas as pd
df = pd.DataFrame({'foo':[0.289798953]})

你看到了:

print(df)
#         foo
# 0  0.289799

但实际浮动值仍为0.289798953

print(df.ix[0, 'foo'])
# 0.289798953

您可以通过设置:

告诉Pandas在小数点后显示9位数字
pd.options.display.float_format = '{:.9f}'.format

或,cᴏʟᴅsᴘᴇᴇᴅ suggestspd.set_option('precision', 9)。 然后打印DataFrame显示:

print(df)
#           foo
# 0 0.289798953

您可以详细了解可用的options here