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

2024-09-30 01:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

输入文件数据-

       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=True

我想从这个文件生成如下所示的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


Tags: 文件csv数据代码dftotalpd空格
1条回答
网友
1楼 · 发布于 2024-09-30 01:30:35

您必须半手动地解析它

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。你知道吗

如果你想让熊猫刺穿它自己,你可以将它导出到一个有适当分隔的csv,然后重新加载它

相关问题 更多 >

    热门问题