蟒蛇熊猫浮点数在转换为字符串时四舍五入



我有这个CSV文件

id,adset_id,source
1,,google
2,23843814084680281,facebook
3,,google
4,23843814088700279,facebook
5,23843704830370464,facebook

我的问题是当我尝试用熊猫阅读它时,因为我无法传递模式熊猫推断adset_id列的模式为 float64(因为 NaN 值(

所以如果我写这个

import pandas as pd
df = pd.read_csv('/Users/test/Desktop/float.csv')
print(df)

我会得到科学记数法adset_id结果:

id      adset_id    source
0   1           NaN    google
1   2  2.384381e+16  facebook
2   3           NaN    google
3   4  2.384381e+16  facebook
4   5  2.384370e+16  facebook

我找不到任何解决此问题的方法,所以我尝试进行黑客攻击并将此数字转换为字符串。但是为了做到这一点,我需要先将其转换为int64,然后将其转换为字符串。

import pandas as pd
import numpy as np
df = pd.read_csv('/Users/test/Desktop/float.csv')
df = df.fillna({'adset_id':-1})
df['adset_id'] = df['adset_id'].astype('int64')
df['adset_id'] = df['adset_id'].astype('str')
df['adset_id'].replace('-1', np.NaN, inplace=True)
print(df)

结果是:

id           adset_id    source
0   1                NaN    google
1   2  23843814084680280  facebook
2   3                NaN    google
3   4  23843814088700280  facebook
4   5  23843704830370464  facebook

如您所见,我的 2 个adset_id四舍五入:
23843814084680281->23843814084680280
23843814088700279->23843814088700280

我只是希望能够将此CSV读取到熊猫数据框,并且不要adset_id为科学记数法,任何解决方案都将不胜感激

pd.read_csv内。看看dtype论点。您可以设置 dtypes 字典以确保将其作为字符串读取。

df = pd.read_csv('PATH_TO_CSV.csv', dtype={'adset_id':str})

您还可以查看na_valueskeep_default_nana_filter参数以帮助处理 NULL

向科学记数法的"转换"pandas以呈现数据的方式发生。 尝试在导入熊猫后立即添加以下代码。

import pandas as pd
pd.options.display.float_format = '{:.2f}'.format

最新更新