我有一个格式错误的“csv”文件:
txt = """NAME;a;b;c
ATTR1;1;2;3
ATTR2;1;2;3;;;
ATTR3;1;2;3;
ATTR4;1;2;3"""
我有一种方法可以使用pandas
pd.read_*
工具箱来获得以下pd.DataFrame
:
是吗?在
另外,我知道怎么用import csv
感谢您的想法和BR, 莱克斯
编辑
这是一个来自真实文件的玩具示例(我再次不得不修改它)。。。在
SRC = 'https://dl.dropboxusercontent.com/u/40513206/test.csv'
NA_VALUES = ['', '#N/A N/A', '#N/A Field Not Applicable', '#N/A Invalid Field',
'#N/A Invalid Security', '#N/AN/A', '#N/A Limit', '#####', '#DIV/0!',
'#N/A', '#NAME?', '#NULL!', '#NUM!', '#REF!', '#VALUE!']
CSV_ENCODING = 'WINDOWS-1252'
S_ROWS = 6
NR_ROWS = 60
NR_COLS = 52 # correct nr. of columns, but not always known
dat_m = pd.read_csv(SRC, sep = ';', header = None, index_col = None, skiprows = S_ROWS,
nrows = NR_ROWS, encoding = CSV_ENCODING, na_values = NA_VALUES, names = range(NR_COLS))
似乎如果我们使用names
参数,那么NR_COLS
必须是>=
第一行中的实际列数,如果不是这样,则形成Index
或{NR_COLS = 50
那么索引有2个级别,如果{
所有这些都是我将Excel
保存到csv
时的结果,它似乎向某些行添加了sep = ';'
,而且由于其他原因,我不能直接使用xls
(read)文件。在
所以我将使用大的NR_COLS
值或继续使用csv
库。在
谢谢你!在
怎么样:
有时候,当我不知道有多少列之前,我会做一些愚蠢的事情,比如
names=range(128)
,然后.dropna(how='all', axis=1)
。在相关问题 更多 >
编程相关推荐