【问题标题】:add a title row on top of each data pairs sets在每个数据对集的顶部添加一个标题行
【发布时间】:2021-05-03 01:57:35
【问题描述】:

我有一个如下所示的 csv:

我使用这个代码:

pairs_ = dict()

with open('text2.txt', 'r') as file:
    for i, j in re.findall(r'(Layer_\d+)\s,\s(\d+\.\d+)ms', file.read()):
        pairs_.setdefault(i, []).extend([i, j])

df = pd.DataFrame(pairs_.values())

使对平行对齐。\

但是我需要在Layer_00之前的每组顶部添加*** Golden value for Channel[%d] , CE[%d] ***

有谁知道如何实现它? (套数可能不同,这只是3套的例子)

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    只需在列表中创建标题并将其传递给 DataFrame,记住为中间列留出空隙。使用您现在拥有的机制是不可能的,您可以在一次re.findall 调用中完成所有操作。您必须逐行处理,以便提取标题。这是未经测试的:

    pairs_ = dict()
    titles = []
    
    with open('text2.txt', 'r') as file:
        for line in file:
            if line.startswith('***'):
                titles.extend( [line.rstrip(),str(len(titles))] )
            else:
                for i, j in re.findall(r'(Layer_\d+)\s,\s(\d+\.\d+)ms', line):
                    pairs_.setdefault(i, []).extend([i, j])
    
    df = pd.DataFrame(pairs_.values(), columns=titles )
    

    【讨论】:

    • 如果我想在我们创建的'columns=titles'顶部添加另一行标题作为从0开始的数字,我应该怎么做?我使用 'df.columns =range(len(df.columns))' 但它会覆盖我们拥有的 'columns=titles'。
    • pandas 支持一行标题。我想您可以在填写矩阵后插入新行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多