首页 > 解决方案 > 具有奇怪结构的数据框,偶数列中的变量

问题描述

我是 python 和 pandas 结合的初学者,我了解基础知识。但是几天前我在 excel 中收到了 3 个奇怪的数据集。如下图: 在此处输入图像描述

import pandas as pd

dfinput = pd.DataFrame([
    ["uuid", "79876081-099b-474f-9e8f-ff917fd7394c", "uuid", "a96bc7cb-02b1-4d13-823a-908531cda095", "uuid",
        "38bc7d20-10be-4774-973c-b3b00234a645", "uuid", "e7b12da6-a47f-4c24-8545-faa24e249a03", "uuid", "6b2c9426-bd6f-4bda-9c53-a86200e051f8"],
    ["variable 1", "value", "variable 1", "value", "variable 1",
        "value", "variable 1", "value", "variable 1", "value"],
    ["variable 2", "value", "variable 2", "value", "variable 2",
        "value", "variable 2", "value", "variable 2", "value"],
    ["variable 3", "value", "variable 3", "value", "variable 3",
        "value", "variable 3", "value", "variable 3", "value"],
    ["variable 4", "value", "variable 4", "value", "variable 4",
        "value", "variable 4", "value", "variable 4", "value"],
    ["variable 5", "value", "variable 5", "value", "variable 5",
        "value", "variable 5", "value", "variable 5", "value"],
    ["variable 6", "value", "variable 6", "value", "variable 6",
        "value", "variable 6", "value", "variable 6", "value"],
    ["variable 7", "value", "variable 7", "value", "variable 7",
        "value", "variable 7", "value", "variable 7", "value"],
    ["variable 8", "value", "variable 8", "value", "variable 8",
        "value", "variable 8", "value", "variable 8", "value"],
    ["variable 9", "value", "variable 9", "value", "variable 9",
        "value", "variable 9", "value", "variable 9", "value"],
    ["variable 10", "value", "variable 10", "value", "variable 10",
        "value", "variable 10", "value", "variable 10", "value"],
    ["variable A", "value", "variable B", "value", "variable A",
        "value", "variable A", "value", "variable A", "value"],
    ["variable B", "value", "variable C", "value", "variable C",
        "value", "variable B", "value", "variable B", "value"],
    ["variable C", "value", "variable D", "value", "variable D",
        "value", "variable D", "value", "variable C", "value"],
    ["variable D", "value", "Variable E", "value", "Variable E",
        "value", "Variable F", "value", "Variable E", "value"],
    ["Variable E", "value", "Variable F", "value", "Variable H",
        "value", "Variable G", "value", "Variable F", "value"],
    ["Variable F", "value", "Variable H", "value", "",
        "", "Variable H", "value", "Variable G", "value"],
    ["Variable G", "value", "", "", "", "", "", "", "Variable H", "value"]
])

我想要以下结果: 在此处输入图像描述

dfoutput = pd.DataFrame([["value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "null"],
                         ["value", "value", "value", "value", "value", "value", "value", "value", "value",
                             "value", "null", "value", "value", "value", "value", "value", "null", "value"],
                         ["value", "value", "value", "value", "value", "value", "value", "value", "value",
                             "value", "value", "null", "value", "value", "value", "null", "null", "value"],
                         ["value", "value", "value", "value", "value", "value", "value", "value", "value",
                             "value", "value", "value", "null", "value", "null", "value", "value", "value"],
                         ["value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "value", "null", "value", "value", "value", "value"]],
                        index=['79876081-099b-474f-9e8f-ff917fd7394c', 'a96bc7cb-02b1-4d13-823a-908531cda095',
                               '38bc7d20-10be-4774-973c-b3b00234a645', 'e7b12da6-a47f-4c24-8545-faa24e249a03', '6b2c9426-bd6f-4bda-9c53-a86200e051f8'],
                        columns=['variable 1', 'variable 2', 'variable 3', 'variable 4', 'variable 5', 'variable 6', 'variable 7', 'variable 8', 'variable 9', 'variable 10', 'variable A', 'variable B', 'variable C', 'variable D', 'Variable E', 'Variable F', 'Variable G', 'Variable H'])

我确实尝试循环列并创建一个新的数据框,但被卡住并认为我让它变得不必要的复杂。我无法理解它。以前有人处理过这个吗?并有一个有用的方向让我去?

标签: pythonpython-3.xpandas

解决方案


您可以通过相当简单的操作将数据重新构建为您想要的结果。请注意,我使用的是dataframe您发布的 (dfinput):

# Change first row to headers and Transpose
headers = dfinput.iloc[0]
one  = (pd.DataFrame(dfinput.values[1:], columns=headers)).T

# Change first row to headers again
one.columns = one.iloc[0]

# Keep only odd indexed rows
res = one.iloc[1::2, :]

res

uuid                                 variable 1 variable 2 variable 3 variable 4 variable 5 variable 6 variable 7 variable 8 variable 9 variable 10 variable A variable B variable C variable D Variable E Variable F Variable G
                                                                                                                                                                                                                            
79876081-099b-474f-9e8f-ff917fd7394c      value      value      value      value      value      value      value      value      value       value      value      value      value      value      value      value      value
a96bc7cb-02b1-4d13-823a-908531cda095      value      value      value      value      value      value      value      value      value       value      value      value      value      value      value      value           
38bc7d20-10be-4774-973c-b3b00234a645      value      value      value      value      value      value      value      value      value       value      value      value      value      value      value                      
e7b12da6-a47f-4c24-8545-faa24e249a03      value      value      value      value      value      value      value      value      value       value      value      value      value      value      value      value           
6b2c9426-bd6f-4bda-9c53-a86200e051f8      value      value      value      value      value      value      value      value      value       value      value      value      value      value      value      value      value

推荐阅读