所以我有20个文件的列表,每个文件有3列和大约一百万行。我将它们放在列表中,然后尝试做的事情是这样的:
df_info = pd.DataFrame(data= {'beginRows': [2, 7], 'endRows': [4, 9]}
每个文件的前两列x和y都是相同的,我只需要每个文件的第三列之和,并有一个新的单个文件,如上面带有x和y列的文件。我尝试过对列求和,但R似乎从未完成计算。
df_result = df[df.index.isin(np.r_[2:4+1,7:9+1])]
然后我尝试了一下,但是它给了我11个数字,我需要有100万个不同的数字
x y Sum
---------------------------------
1 1 28
. . .
. . .
. . .
900000 900000
有什么想法吗?
编辑:
我用了这个:
Sum <- do.call(rowSums,lapply(new,function(df){(df[3])}))
Sum <- do.call(rbind,lapply(new,function(df){sum(df[3])}))
答案 0 :(得分:0)
IIUC,这应该返回所有行。您可以执行以下操作
# create sample data
d1 <- data.table(x=rep(1,10), y=rep(2,10), z = rep(1:5, each=2))
d2 <- data.table(x=rep(1,10), y=rep(2,10), z = rep(10:14, each=2))
dll <- list(d1, d2)
## add a group column
for(i in seq_along(dll)){
dll[[i]] <- cbind(dll[[i]], group=i)
}
# convert list to df
mdf <- do.call('rbind', dll)
# convert df to data.table
setDT(mdf)
mdf[,sum := sum(z), group]
mdf[,group := NULL]