首页 > 解决方案 > 读取csv后pandas列中的不同类型

问题描述

我正在阅读 .csv 文件,列的一些条目被识别为字符串,而一些被识别为浮点数(即使它们都具有相同的格式!!!)我正在使用以下代码:

df = pd.read_csv( "data.csv", usecols = range(0,21), sep =';', decimal=',')
df[df.columns[0:21]] = df[df[0:21]].convert_objects(convert_numeric=True)

这里 col1 的输出:

1               NaN
2               NaN
3               NaN
4               NaN
5               NaN 
...
164686       22.847412
164687       22.804832
164688       22.561518

在我尝试转换它们之后,所有被识别为字符串的类型现在都是“NaN”类型。对我来说,这似乎是一个 python 错误,因为它们具有完全相同的格式。这里有几行 .vsc 文件

      Col1        Col1        Col3         
1     23,13854599;10,99679279;0;41,40728378;
2     23,24945831;10,96249676;0;41,54985428;
3     23,16853714;11,24223709;0;40,13756943;
4     23,0876255;10,66694546;0;40,24223328;
5     23,05908775;11,06436825;0;40,91619873;
...

164686  22,84741211;11,84464455;8,786539078;
164687  22,80483246;12,12989521;8,778803825;
164688  22,56151772;12,29102707;8,908541679;

同时我真的很绝望!重要的是要知道,我仅限于 pandas 0.16.2,因此我不能使用诸如 to_numeric 之类的方法。

非常感谢您的帮助

编辑:直接类型转换的示例

df = pd.read_csv( "data.csv", sep =';',  usecols = range(0,21), dtype = {'Col1' : float, 'Col2' : float})

标签: pythonpandascsvnan

解决方案


您可以在使用参数读取 CSV 时指定列类型dtype

https://pandas.pydata.org/pandas-docs/version/0.16/generated/pandas.read_csv.html


推荐阅读