繁体   English   中英

如何使用pandas.read_csv读取csv文件时将pandas.dataframe中的元素转换为np.float?

[英]How to convert the element in a pandas.dataframe to np.float while use pandas.read_csv to read csv file?

我有一个.csv文件,它是软件的导出输出。 这个.csv文件包含很多NaN。 我需要通过将数据读入数据帧来分析数据,并使用dataframe.fillna(0)将所有NaN替换为0.但是,当我使用pandas.read_csv()导入此.csv文件时,元素的类型在数据帧中是'str',因此不能使用dataframe.fillna(0) 所以我的问题是:如何在读取.csv文件时将元素转换为np.float?

有一种说法是dtypepandas.read_csv ,这里是explantion:

dtype : Type name or dict of column -> type, default None
Data type for data or columns. E.g. {‘a’: np.float64, ‘b’: np.int32} Use str 
or object to preserve and not interpret dtype. If converters are specified, 
they will be applied INSTEAD of dtype conversion.

有关如何使用它的任何例子?

非常感谢你!

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~

更新:

以下是答复者提出的几种解决方案:

(1)来自@Jakub。 pandas.read_csv()设置na_values=NaN ,因此.csv文件中的所有元素都可以转换为np.float作为读入数据帧。

(2)来自@AndréChristofferAndersen。 读取.csv文件作为数据帧后。 使用pandas.to_numeric将数据帧的列转换为np.float 使用for循环将所有列转换为数字。

(3)来自@ThisGuyCantEven。 使用numpy.loadtxt将.csv文件读入numpy.ndarray 使用skiprows参数跳过具有不相等元素的行。 然后使用numpy.nan_to_num()nan转换为零。

希望它能帮助读者!

如果您有足够新的pandas版本,您还可以使用pd.to_numeric(...)

df['mycol'] = pd.to_numeric(df['mycol'], errors='coerce')

而且,这是一个转换整个数据帧的技巧:

for col in df.columns:
    df[col] = pd.to_numeric(df[col], errors='coerce')

为什么不使用numpy.loadtxt 如果你想使用pandas,因为你有混合数据而你想要一个数字列作为numpy数组,你总是可以使用df['column'].as_matrix() ,或者你可以转换整个数据框,如果你想。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM