簡體   English   中英

根據關鍵字連續將csv拆分成幾部分,然后轉置

[英]split the csv into parts based on keywords in a row and then transpose it

我有一個看起來像這樣的 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM