2015-11-29 49 views
3

无法将以下空格分隔的数据文件导入python并将它们拆分为可以使用的数据框。 原始数据文件是这样的:将带空格分隔符的文本文件导入python中的csv

3300 0.272 0.302 69 153 21 4 31 104 22 80 4 3 1 0 0 0 "Andre Dawson  " 
2600 0.269 0.335 58 111 17 2 18 66 39 69 0 3 1 1 0 0 "Steve Buchele " 

import pandas as pd 
data = pd.read_csv('../data/ABRMdata', header=None) 
split_text = [] 
for line in data: 
    split_text.append(line) 

return split_text 

,我只得到[0]返回 但我希望列表

[3300,0.272,0.302,69,153,21,4,31,104,22,80,4,3,1, 0,0,0,"Andre Dawson "] 
[2600,0.269,0.335,58,111,17,2,18,66,39,69, 0,3,1,1,0,0,"Steve Buchele "] 

任何想法列表返回的数据? 感谢您的高级帮助

回答

1

你可以使用sep参数大熊猫read_csv的:

import pandas as pd 
from io import StringIO 

data = """ 
3300 0.272 0.302 69 153 21 4 31 104 22 80 4 3 1 0 0 0 "Andre Dawson  " 
2600 0.269 0.335 58 111 17 2 18 66 39 69 0 3 1 1 0 0 "Steve Buchele " 
""" 

df = pd.read_csv(StringIO(data), sep='\s+', header=None) 


In [87]: df 
Out[87]: 
    0  1  2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ 
0 3300 0.272 0.302 69 153 21 4 31 104 22 80 4 3 1 0 0 
1 2600 0.269 0.335 58 111 17 2 18 66 39 69 0 3 1 1 0 

    16     17 
0 0 Andre Dawson  
1 0 Steve Buchele 

编辑

,或者你可以设置delim_whitespaceTrue

df = pd.read_csv(StringIO(data), delim_whitespace=True, header=None) 

In [440]: df 
Out[440]: 
    0  1  2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ 
0 3300 0.272 0.302 69 153 21 4 31 104 22 80 4 3 1 0 0 
1 2600 0.269 0.335 58 111 17 2 18 66 39 69 0 3 1 1 0 

    16     17 
0 0 Andre Dawson 
1 0 Steve Buchele 
+0

工作就像一种享受。谢谢 – pakkunrob

+1

@pakkunrob不要忘记,如果你满意答案,你可以upvote和接受它。谢谢 –

1

您需要使用熊猫吗?

这段代码会让你在熊猫之外开始。 (它不是纠正您的具体要求)

import csv 

with open('/Users/toasteez/desktop/file.txt', 'r') as csvfile: 
    w = csv.reader(csvfile) 
    for line in w: 
     newline = str.replace(line[0],' ',',') 
     print(newline) 
1

正如David提到大熊猫read_fwf可用于创建数据帧可以使用to_dict()和许多其他数据结构转换为python字典。

In [30]: df = pd.read_fwf("filefor",header=None) 

In [31]: df 
Out[31]: 
    0  1  2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ 
0 3300 0.272 0.302 69 153 21 4 31 104 22 80 4 3 1 0 0 
1 2600 0.269 0.335 58 111 17 2 18 66 39 69 0 3 1 1 0 

    16  17  18 19 
0 0 "Andre Dawson " 
1 0 "Steve Buchele " 

In [32]: df.to_dict() 
Out[32]: 
{0: {0: 3300, 1: 2600}, 
1: {0: 0.27200000000000002, 1: 0.26899999999999996}, 
2: {0: 0.30199999999999999, 1: 0.33500000000000002}, 
3: {0: 69, 1: 58}, 
4: {0: 153, 1: 111}, 
5: {0: 21, 1: 17}, 
6: {0: 4, 1: 2}, 
7: {0: 31, 1: 18}, 
8: {0: 104, 1: 66}, 
9: {0: 22, 1: 39}, 
10: {0: 80, 1: 69}, 
11: {0: 4, 1: 0}, 
12: {0: 3, 1: 3}, 
13: {0: 1, 1: 1}, 
14: {0: 0, 1: 1}, 
15: {0: 0, 1: 0}, 
16: {0: 0, 1: 0}, 
17: {0: '"Andre', 1: '"Steve'}, 
18: {0: 'Dawson', 1: 'Buchele'}, 
19: {0: '"', 1: '"'}} 

是它infered空间插图中最后一个字段作为分隔符,以避免widths=[1,5....]可以用来

其他DS为使用

df.to_clipboard df.to_hdf  df.to_period  df.to_string 
df.to_csv  df.to_html  df.to_pickle  df.to_timestamp 
df.to_dense  df.to_json  df.to_records df.to_wide 
df.to_dict  df.to_latex  df.to_sparse  
df.to_excel  df.to_msgpack df.to_sql   
df.to_gbq  df.to_panel  df.to_stata 
相关问题