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

时间:2018-12-15 05:08:06

标签: python pandas dataframe transform transport

我有一个csv文件,其中包含沿行的数据。 我想通过将所有行都传输到列来创建数据框。我提供了以下示例数据框,用于复制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'转换为新数据框的列,并将其对应的数据转换为新列,得分。 第一列“名称”将用作新列,但所有分数均重复。

以下是预期的输出。

enter image description here

在新数据框中,将复制第一列名称中的元素。第二列得分中的元素是旧数据框中的某些列名称。 其余的列,例如硬件将与名称列相同。

我可以知道如何改变它吗? 非常感谢您的建议。 谢谢。 Zep。

1 个答案:

答案 0 :(得分:1)

尝试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