![](/img/trans.png)
[英]Can I use DataFrame.to_csv and pandas.read_csv to consistently write and read type 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?
有一种说法是dtype
为pandas.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.