【发布时间】:2017-12-18 15:37:37
【问题描述】:
我正在从 csv 文件导入数据以用于 pandas 数据框。我的数据文件有 102 行和 5 列,并且在 Excel 中都清楚地标记为“数字”。我的代码如下:
import pandas as pd
data = pd.read_csv('uni.csv', header=None, names = ['TopThird', 'Oxbridge', 'Russell', 'Other', 'Low'])
print data.head()
输出如下:
TopThird Oxbridge Russell Other Low
0 14\t1\t12\t35\t1 NaN NaN NaN NaN
1 14\t1\t12\t32\t0 NaN NaN NaN NaN
2 16\t0\t13\t33\t0 NaN NaN NaN NaN
3 10\t0\t9\t44\t1 NaN NaN NaN NaN
4 18\t1\t13\t28\t1 NaN NaN NaN NaN
这继续到数据框的底部。我试图将 Excel 中的单元格类型更改为“常规”或在“数字”类型上使用小数点,但这并没有改变任何内容。
为什么会这样?如何预防?
【问题讨论】:
-
因为你没有通过正确的分隔符。给
read_csv添加参数delim_whitespace=True。 -
或者,作为 TSV,您可以使用
pd.read_fwf(...)。 -
@cᴏʟᴅsᴘᴇᴇᴅ 谢谢,第一个有效。如果您想在其中包含一些解释,请随时发布作为答案。
-
@cᴏʟᴅsᴘᴇᴇᴅ:等等,什么?作为制表符分隔的文件,您建议首先使用所有空格作为分隔符,然后使用固定宽度格式阅读器?
-
@DSM 因为我不确定什么会起作用,所以我提供了两种选择。其中一个似乎有效。
标签: python pandas dataframe nan