根据一行中的关键字将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
.......

我想把这个csv分成3个部分,从关键字"读取部分"开始,然后把它们转换成这样的东西:

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 DataFrame:

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

最新更新