我有一个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'转换为新数据框的列,并将其对应的数据转换为新列,得分。 第一列“名称”将用作新列,但所有分数均重复。
以下是预期的输出。
在新数据框中,将复制第一列名称中的元素。第二列得分中的元素是旧数据框中的某些列名称。 其余的列,例如硬件将与名称列相同。
我可以知道如何改变它吗? 非常感谢您的建议。 谢谢。 Zep。
答案 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_index
和stack
:
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