如何将文本文件加载到pandas数据框中?

时间:2017-05-24 12:01:15

标签: python pandas

我有一个看起来像这样的文本文件:

`

 101   the   323
 103   to    324
 104   is    325

其中分隔符是四个空格。我正在尝试read_csv函数,以便将其转换为pandas数据框。

data= pd.read_csv('file.txt', sep=" ", header = None)

然而它给了我很多NaN值

    101\tthe\tthe\t10115  NaN  NaN     NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
     102\tto\tto\t5491  NaN  NaN     NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
     103\tof\tof\t4767  NaN  NaN     NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
       104\ta\ta\t4532  NaN  NaN     NaN  NaN  NaN  NaN  NaN  NaN  NaN  Na

有什么方法可以将文本文件读成正确的csv格式。

2 个答案:

答案 0 :(得分:3)

如果需要分隔符4空格:

data = pd.read_csv('file.txt', sep="\s{4}", header = None, engine='python')
print (data)
     0    1    2
0  101  the  323
1  103   to  324
2  104   is  325

如果需要分隔符一个或多个witespace,请使用参数delim_whitespace=True(感谢carthurs)或\s+

data = pd.read_csv('file.txt', sep="\s+", header = None)
data = pd.read_csv('file.txt', delim_whitespace=True, header = None)

但如果分隔符为tab

data = pd.read_csv('file.txt', sep="\t", header = None)

答案 1 :(得分:0)

你有一个固定宽度的文件,所以你可以使用read_fwf来嗅探文件的形式:

In[79]:
pd.read_fwf('file.txt', header=None)

Out[79]: 
     0    1    2
0  101  the  323
1  103   to  324
2  104   is  325