我有第一个事件,第二个事件和场合的数据框。它由以下格式的对组成:
(e1,e2,10)
(e1,e1,1)
(e1,e3,12)
(e2,e1,10)
(e2,e2,50)
然后,我想用以下格式编写一个csv文件:
e1 e2 e3
e1 1 10 12
e2 10 50 0
e3 12 0 0
答案 0 :(得分:2)
如果您有一个包含三列的数据集,则可以使用groupBy,pivot和sum:
df.show
+---+---+-----+
| c1| c2| c3|
+---+---+-----+
| e1| e2| 10.0|
| e1| e1| 1.0|
| e1| e4| 12.0|
| e1| e4|100.0|
| e2| e1| 10.0|
| e2| e2| 50.0|
+---+---+-----+
df.groupBy("c1").pivot("c2").sum("c3").show
+---+----+----+-----+
| c1| e1| e2| e4|
+---+----+----+-----+
| e2|10.0|50.0| null|
| e1| 1.0|10.0|112.0|
+---+----+----+-----+
请注意,我使用“sum”,因此,如果您不止一次拥有相同的一对事件,则会对您的事件进行求和。如果您想要其他行为,可以使用任何其他聚合函数(avg,min,max ...)。
答案 1 :(得分:0)
如果您的数据框如下所示:
c1 | c2 | c3
---|----|----
e1 | e2 | 10
e1 | e1 | 1
e1 | e4 | 12
e1 | e4 | 100
e2 | e1 | 10
e2 | e2 | 50
给列的名称看起来像这样(c1 / c2 / c3是你可以根据需要制作这些名称的列名)......
pivot_table
并使用pandas数据框df = df.pivot_table(values = 'c3', index = 'c1', columns = 'c2')
函数
沿着(df是表名)..
e1 e2 e3
e1 1 10 12
e2 10 50 0
e3 12 0 0
理论上它会使它看起来像你的预期输出:
let shiftBits: UInt8 = 4 // 00000100 in binary
shiftBits << 1 // 00001000
shiftBits << 2 // 00010000
shiftBits << 5 // 10000000
shiftBits << 6 // 00000000
shiftBits >> 2 // 00000001
尚未测试