Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据行中的关键字将csv拆分为多个部分,然后将其转置_Python_Pandas_Csv - Fatal编程技术网

Python 根据行中的关键字将csv拆分为多个部分,然后将其转置

Python 根据行中的关键字将csv拆分为多个部分,然后将其转置,python,pandas,csv,Python,Pandas,Csv,我有一个csv文件,如下所示: read, part1,,, BL, WL, layer, 23, 56 BL, WL, layer, 67, 92 read, part2,,, BL, WL, layer, 29, 53 BL, WL, layer, 10, 79 read, part3,,, BL, WL, layer, 56, 93 BL, WL, layer, 10, 38 ....... read, part 1,,, read, part 2,,,

我有一个csv文件,如下所示:

read, part1,,,
BL, WL, layer, 23, 56
BL, WL, layer, 67, 92
read, part2,,,
BL, WL, layer, 29, 53
BL, WL, layer, 10, 79
read, part3,,,
BL, WL, layer, 56, 93
BL, WL, layer, 10, 38
.......
read, part 1,,,              read, part 2,,,               read, part 3,,,
BL, WL, layer, 23, 56     BL, WL, layer, 29, 53,     BL, WL, layer, 56, 93
BL, WL, layer, 67, 92     BL, WL, layer, 10, 79,     BL, WL, layer, 10, 38
.......
我想将此csv分为3个部分,以关键字“read part”开头,然后将它们转换为如下内容:

read, part1,,,
BL, WL, layer, 23, 56
BL, WL, layer, 67, 92
read, part2,,,
BL, WL, layer, 29, 53
BL, WL, layer, 10, 79
read, part3,,,
BL, WL, layer, 56, 93
BL, WL, layer, 10, 38
.......
read, part 1,,,              read, part 2,,,               read, part 3,,,
BL, WL, layer, 23, 56     BL, WL, layer, 29, 53,     BL, WL, layer, 56, 93
BL, WL, layer, 67, 92     BL, WL, layer, 10, 79,     BL, WL, layer, 10, 38
.......

有人知道如何实现它吗?任何想法都将不胜感激,谢谢

从您的示例来看,您似乎希望将所有内容都放在一个文件中,我希望这对您有所帮助:

import pandas as pd
import csv

result = pd.DataFrame()

with open('file.csv', 'r') as f:
    tables = []
    for line in f.readlines():
        if 'part' in line:
            part = line.split(',')[1].split('part')[1]
            tables.append([line.strip()])
        else:
            tables[int(part) - 1].append(line.strip())

    for table in tables:
        result = pd.concat([result, pd.DataFrame(table)], axis=1)

    headers = result.iloc[0]
    result.columns = headers
    result.drop(0, inplace=True)

print(result)
确保在
with open()语句中更改文件名

这将生成包含以下内容的pandas数据帧:

0         read, part1,,,         read, part2,,,         read, part3,,,
1  BL, WL, layer, 23, 56  BL, WL, layer, 29, 53  BL, WL, layer, 56, 93
2  BL, WL, layer, 67, 92  BL, WL, layer, 10, 79  BL, WL, layer, 10, 38

是否要生成3个用
读取部分分隔的csv文件?
?我要将它们生成为一个带有“读取部分”的csv文件。