我有一个非常大的数据集。它包含超过1000万条记录。使用这么多数据集来应用任何算法都非常困难。所以,我试图重组这个数据集。在我的数据集中,每个客户都有很多记录。现在我试图为每个客户转换一条记录。
这里我代表我的样本模拟数据。
d1<-structure(
list(userid = c(64455670203, 64455670203, 64455670203, 64455670203, 64455670203, 64455670204, 64455670204, 64455670204, 64455670204, 64455670204),
day = c(1L, 1L, 2L, 3L, 3L, 2L, 2L, 3L, 4L, 4L),
channel = structure(
c(1L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 1L, 2L),
.Label = c("dsp", "osr"),
class = "factor"
)
),
.Names = c("userid", "day", "channel"),
class = "data.frame",
row.names = c(NA, -10L)
)
现在我打算将以上表示的数据转换如下..
d2<-structure(
list(csm_id = c(64455670203, 64455670204),
dsp1 = c(2L, 0L),
dsp2 = c(1L, 1L),
dsp3 = c(1L, 0L),
dsp4 = 0:1,
ors1 = c(0L, 0L),
ors2 = 0:1,
ors3 = c(1L, 1L),
ors4 = 0:1
),
.Names = c("csm_id", "dsp1", "dsp2", "dsp3", "dsp4", "ors1", "ors2", "ors3", "ors4"),
class = "data.frame",
row.names = c(NA, -2L)
)
这里我要做的是,首先我在数据集中找到不同的渠道和不同的日子。现在我连接这两个对象(不同的通道和天数),然后将它们用作我的新数据集的列名。
我在R中编写了一个简单的代码但是这非常耗费时间。任何人都可以帮我完成这项任务。
如何在python中执行相同的操作?
提前致谢。
答案 0 :(得分:1)
尝试
dcast(d1, userid~channel+day, value.var='day', drop=FALSE)
# userid dsp_1 dsp_2 dsp_3 dsp_4 osr_1 osr_2 osr_3 osr_4
#1 64455670203 2 1 1 0 0 0 1 0
#2 64455670204 0 1 0 1 0 1 1 1