如何使用pandas读取包含空格的空格分隔文件?

时间:2017-06-06 12:19:11

标签: python pandas

我想使用python pandas读取一个空格分隔文件。此文件的第一列包含一些空格,因此我无法成功读取此文件。

输入文件数据

       Jan1 Jan2 Jan3 Jan4 Jan5 total
A BC    1    2    4    4    5    16
PQ R    1    2    3    4    5    15
X Y Z    2    2    2    2    2    10

我试图使用以下代码阅读它 -

df = pd.read_csv("text2.txt", sep = r"\s+",engine='python')
df.to_csv("out.csv",index=None)

我也尝试过使用 -

  

delim_whitespace =真

我想从这个文件生成csv文件,如下所示 -

names,Jan1,Jan2,Jan3,Jan4,Jan5,total
A BC,1,2,4,4,5,16
PQ R,1,2,3,4,5,15
X Y Z,2,2,2,2,2,10

我是否错过了一些p

1 个答案:

答案 0 :(得分:1)

您必须半手动解析

def read_funny_csv(filehandle):
    columns = None
    index = list()
    data = list()

    split_pattern = re.compile('\s+')

    num_columns = None
    for line in filehandle:
        parts = split_pattern.split(line.strip())
        if num_columns is None:
            num_columns = len(parts)
            columns = parts
            continue
        index.append(' '.join(parts[:-num_columns]))
        data.append(parts[-num_columns:])
    return columns, index, data

调用此

with open("text2.txt", 'r') as filehandle:
    columns, index, data = read_funny_csv(filehandle)

df = pd.DataFrame(index=index, data=data, columns=columns)

您必须自己指定dtypes

如果你想让pandas自己做一个刺,你可以将它导出到一个体面划分的csv,并重新加载它