我有一个如下所示的数据框。
<div class="container">
<div class="green"></div>
<div class="white"></div>
<div class="circle">A</div>
</div>
我想将每个SIGx作为一个新列,并将对应的VALUE作为来自现有列SIGNAL的每个SIGx的行。
输出应如下所示。
+------+-------------+------+-----+
|NUM_ID| TIME|SIGNAL|VALUE|
+------+-------------+------+-----+
|XXXX01|1571634079547| SIG1|78860|
|XXXX01|1571634090000| SIG1|25.73|
|XXXX01|1571634042000| SIG1|25.73|
|XXXX01|1571634050000| SIG1|25.73|
|XXXX01|1571634050000| SIG2|25.73|
|XXXX01|1571634066000| SIG2|25.73|
|XXXX01|1571634074000| SIG2|25.73|
|XXXX01|1571634090000| SIG3|25.73|
|XXXX02|1571634088000| SIG1|25.73|
|XXXX02|1571634040000| SIG1|25.73|
|XXXX02|1571634048000| SIG1|25.73|
|XXXX02|1571634056000| SIG1|25.73|
|XXXX02|1571634088000| SIG2|25.73|
|XXXX02|1571634072000| SIG2|25.73|
|XXXX02|1571634080000| SIG2|25.73|
|XXXX02|1571634088000| SIG3|25.73|
|XXXX02|1571634094000| SIG3|25.73|
|XXXX02|1571634038000| SIG3|25.73|
|XXXX03|1571634046000| SIG1|25.73|
|XXXX03|1571634054000| SIG1|25.73|
|XXXX03|1571634062000| SIG1|25.73|
|XXXX03|1571634070000| SIG1|25.73|
|XXXX03|1571634078000| SIG2|25.73|
|XXXX03|1571634092000| SIG2|25.73|
|XXXX03|1571634036000| SIG2|25.73|
|XXXX03|1571634044000| SIG3|25.73|
|XXXX03|1571634052000| SIG3|25.73|
|XXXX03|1571634060000| SIG3|25.73|
+------+-------------+------+-----+
具有相同时间的SIGx的值应该在同一行中。
有什么办法可以做到这一点? 我尝试使用数据透视功能,但对于具有多个值的数据透视列无法正常工作。
任何潜在客户均表示赞赏。预先感谢!
答案 0 :(得分:1)
您可以使用groupBy
"NUM_ID"
"TIME"
,pivot
和"SIGNAL"
,并从"VALUE"
获取第一个值,如下所示。
df.groupBy("NUM_ID", "TIME")
.pivot("SIGNAL")
.agg(first("VALUE"))
希望这会有所帮助!