【问题标题】:pandas.read_csv reading string instead of floatpandas.read_csv 读取字符串而不是浮点数
【发布时间】:2015-02-20 08:34:21
【问题描述】:

我的程序一直将输入文件作为字符串读取,即使它的所有值都是浮点数。

pd.read_csv('input.txt', sep=' ', dtype=np.float32)

此外,由于某种原因,我的数组在浮点值中包含多个点,即使我的文本中的格式很好

input.txt 内容:

-0.90051 -0.90051 -1.071287 -1.098813 -1.023997 -0.90051 -1.187293

pd.read_csv('input.txt', sep=' ', dtype=np.float32) 的结果

-0.90051, -0.90051.1, -1.071287, -1.098813, -1.023997, -0.90051.2 -1.187293,

【问题讨论】:

  • 向我们展示几行 csv 及其意外输出。

标签: python numpy pandas


【解决方案1】:

你没有告诉read_csv你没有标题行,因此你在名字冲突时观察额外的小数点,将header=None传递给read_csv

In [354]:
# your code
temp='''-0.90051 -0.90051 -1.071287 -1.098813 -1.023997 -0.90051 -1.187293'''
pd.read_csv(io.StringIO(temp), sep=' ', dtype=np.float32)
Out[354]:
Empty DataFrame
Columns: [-0.90051, -0.90051.1, -1.071287, -1.098813, -1.023997, -0.90051.2, -1.187293]
Index: []

In [355]:
# pass header=None
pd.read_csv(io.StringIO(temp), sep=' ', header=None, dtype=np.float32)
Out[355]:
         0        1         2         3         4        5         6
0 -0.90051 -0.90051 -1.071287 -1.098813 -1.023997 -0.90051 -1.187293

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多