微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python中将行值转换为列名和相同的列名作为列值?

如何解决如何在python中将行值转换为列名和相同的列名作为列值?

我想将行值转换为列名,而这些列名就是列值。我尝试过使用枢轴,但它没有提供所需的输出

Data:
col1   col2   col3 col4
x1      y1      z1   a1
x1      y1      z1    a2
x1      y1      z1    a3

我尝试过如下:

Data.pivot(columns='Col4',values='col4')

Output:
a1  a2   a3
a1 NAN   NAN
NAN a2   NAN
NAN  NAN  a3

Desired output:

col1 col2 col3  a1  a2 a3
x1     y1   z1  a1  a2 a3

解决方法

您可以使用 pivot,但您需要指定 index 参数以保留您的“col1”、“col2”、“col3”。完成此操作后,您可以稍微清理数据框以获得所需的结果。

out = (df.pivot(index=["col1","col2","col3"],columns="col4",values="col4")
         .rename_axis(columns=None)
         .reset_index())

print(out)
  col1 col2 col3  a1  a2  a3
0   x1   y1   z1  a1  a2  a3

步骤

  • pivot(...):根据需要旋转数据框。这使得 MultiIndex 为“col1”、“col2”和“col3”。然后是来自“col4”值的实际列和值
  • rename_axis(columns=None)pivot 使列成为具有名称的 Index 对象。我发现这个名字让人们无法调整数据框的表示方式。在这里,我从 Index 列中删除了名称,以便它可以表示 OP 期望的方式
  • reset_index() 如前所述 - pivot 使 MultiIndex 为“col1”、“col2”和“col3”。我们在这里使用 reset_index() 来获取这些值并将其插入到 DataFrame 的实际数据中,而不是作为 MultiIndex

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?