我正在整理一个脚本来分析活动并报告。我正在python中构建它,以便下次轻松实现。我遇到了与数据中包含的ID有关的问题,它们本质上确实是很大的数字(没有字符串,没有字符)。当从excel中提取数据时,我得到这样的浮点数(7.000000e + 16),而实际上却是这样的整数(70000000001034570)。我的问题是,我丢失了大量数据,并且各种唯一ID都转换为几个不同的float。我意识到这可能与read_csv函数有关,因为所有这些都来自.csv。我不确定转换为字符串会给我带来与浮点数相同的结果,只是将其转换为字符串数据类型会给我带来什么结果,转换为int会给我带来科学计数法的文字结果(即70000000000000000)。是否有我可以将其存储为的数据类型或可以用于保留数据的方法?我将不得不在ID的后面合并从查询中提取的数据,因此理想情况下,我想找到一个可以保留它们的数据类型。下面的几行代码可以运行,但是由于我描述的问题,返回的行很少。
`high_lvl_df = pd.read_csv(r"mycsv.csv")
full_df = low_lvl_df.merge(right=high_lvl_df, on='fact', how='outer')
full_df.to_csv(r'fullmycsv.csv')`
答案 0 :(得分:0)
这可能与缺少值有关。
考虑此CSV:
70000000001034570,2.
70000000001034571,3.
然后:
>>> pandas.read_csv('asdf.csv', header=None)
0 1
0 70000000001034570 2.0
1 70000000001034571 3.0
为您带来预期的结果。
与:
70000000001034570,2.
,1.
70000000001034571,3.
您得到:
>>> pandas.read_csv('asdf.csv', header=None)
0 1
0 7.000000e+16 2.0
1 NaN 2.0
2 7.000000e+16 3.0
这是因为整数没有NaN
值,而浮点数确实具有该值作为有效值。因此,Pandas推断列类型是浮点型,而不是整数。
您可以使用pandas.read_csv()
的{{1}}参数来强制输入字符串,例如:
dtype
dtype :类型名称或列的字典->类型,可选
数据或列的数据类型。例如。 {“ a”:np.float64,“ b”:np.int32,“ c”:“ Int64”}将str或object与合适的na_values设置一起使用,以保留而不解释dtype。如果指定了转换器,则会将它们应用于dtype转换。