传输数据以创建新数据框以重新构建数据框

Transporting data to create a new data frame to re-structure the data frame

我有一个 csv 文件,其中包含沿行的数据。 我想通过将所有行传输到 columns.I 来创建数据框,提供了以下示例数据框,该数据框复制了 csv 中的数据。

data = pd.DataFrame()
data ['Name'] = ['A','B','C']
data ['Home'] = ['Z','Y','X']
data ['1-0'] = [2.2,3.1,3]
data['2-0'] = [1.5,5,8]
data ['2-1'] = [5,2,3]
data ['HW'] = [1.2,3.2,4]

我想将列“1-0”、“2-0”、“2-1”转换为新数据框的列,并将其对应的数据转换为新列 得分。 第一列 ** 名称 ** 将用作新列,但所有分数都是重复的。

以下是预期的输出。

在新数据框中,第一列 Name 中的元素将被复制。第二列中的元素 Score 是旧数据框中的一些列名称。 其余列如 HW 将被复制为与名称列相同。

请问如何改造? 非常感谢您的建议。 谢谢。 Zep.

尝试 melt:

data.melt(['Name','Home','HW']).sort_values('Name')

输出:

  Name Home   HW variable  value
0    A    Z  1.2      1-0    2.2
3    A    Z  1.2      2-0    1.5
6    A    Z  1.2      2-1    5.0
1    B    Y  3.2      1-0    3.1
4    B    Y  3.2      2-0    5.0
7    B    Y  3.2      2-1    2.0
2    C    X  4.0      1-0    3.0
5    C    X  4.0      2-0    8.0
8    C    X  4.0      2-1    3.0

此外,您可以使用 set_indexstack:

data.set_index(['Name','Home','HW']).stack().reset_index()

输出:

  Name Home   HW variable  value
0    A    Z  1.2      1-0    2.2
3    A    Z  1.2      2-0    1.5
6    A    Z  1.2      2-1    5.0
1    B    Y  3.2      1-0    3.1
4    B    Y  3.2      2-0    5.0
7    B    Y  3.2      2-1    2.0
2    C    X  4.0      1-0    3.0
5    C    X  4.0      2-0    8.0
8    C    X  4.0      2-1    3.0