Python 根据行中的关键字将csv拆分为多个部分,然后将其转置
我有一个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,,,
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文件。