在python中将带有空格分隔符的文本文件导入csv

在python中将带有空格分隔符的文本文件导入csv,python,csv,pandas,Python,Csv,Pandas,在将以下空格分隔的数据文件导入python并将其拆分为我可以使用的数据帧时遇到问题。 原始数据文件如下所示: 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

在将以下空格分隔的数据文件导入python并将其拆分为我可以使用的数据帧时遇到问题。 原始数据文件如下所示:

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    "]
有什么想法吗?
感谢高级中的帮助

您需要使用熊猫吗

这段代码会让你从熊猫以外的地方开始。(与您的规格不符)


事实上,您可能有一个不是以空格分隔的文件,而是一个带有固定字段的文件。如果是这种情况,请查看pandas.read\u fwf。

您可以使用熊猫的
sep
参数:

编辑

或者您可以将
delim_空格设置为
True

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

正如David提到的,可以使用pandas
read\u 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: '"'}}
是的,它推断最后一个字段之间的空格作为分隔符,以避免使用
宽度=[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 

@pakkunrob不要忘记,如果你对答案感到满意,你可以投票并接受它。谢谢
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: '"'}}
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