Pandas读取csv忽略逗号,每行一列

时间:2017-02-09 14:13:41

标签: python csv pandas

我有一个txt文件,其格式如下

a 1 blah
b 2 blah,inc
c 3 foo,inc

我希望使用df将其读入read_csv(),但逗号会给我一个错误,我不想跳过error_bad_lines=False

如何将每行读入df ONE列?或者我应该使用其他方法吗?

2 个答案:

答案 0 :(得分:3)

我认为您需要将默认分隔符,更改为s\+ for white-space sep:

import pandas as pd
from pandas.compat import StringIO

temp=u"""
a 1 blah
b 2 blah,inc
c 3 foo,inc"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), sep='\s+', header=None, names=['a','b','c'])
print (df)
   a  b         c
0  a  1      blah
1  b  2  blah,inc
2  c  3   foo,inc

对于一列,请使用一些不在|¥等数据中的分隔符:

temp=u"""
a 1 blah
b 2 blah,inc
c 3 foo,inc"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), sep='|', header=None, names=['a'])
print (df)
              a
0      a 1 blah
1  b 2 blah,inc
2   c 3 foo,inc

read_fwf的另一个解决方案:

df = pd.read_fwf(StringIO(temp), header=None, colspecs=[(0, 100)])

print (df)
              0
0      a 1 blah
1  b 2 blah,inc
2   c 3 foo,inc

答案 1 :(得分:1)

我认为pd.read_csv(delim_whitespace=True)应该可以解决问题。