如何使用reduce函数而不是groupby在Dataframe的多列上汇总总和?因为,groupby sum现在要花很多时间,所以我正在考虑使用reduce函数。任何线索都会有所帮助。
Input:
| A | B | C | D |
| x | 1 | 2 | 3 |
| x | 2 | 3 | 4 |
CODE:
dataFrame.groupBy("A").sum()
Output:
| A | B | C | D |
| x | 3 | 5 | 7 |
答案 0 :(得分:0)
您必须将#include <stdio.h>
#include <stdlib.h>
void **alloc(int n,int m)
{
int **x=(int**)malloc(n*sizeof(int*));
for(int i=1; i<=n; i++)
x[i] =(int*)malloc(m*sizeof(int*));
return x ;
}
void read(int **a,int n,int m,FILE *f)
{
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
fscanf(f,"%d",&a[i][j]);
}
void print(int **a,int n,int m)
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
void transpose(int **a,int n,int m,int ***b)
{
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
b[j][i]=a[i][j];
}
int main()
{
int n,m;
FILE *f;
f=fopen("in.txt","r");
if(f==NULL)
printf("Error");
fscanf(f,"%d %d",&n,&m);
int **a=alloc(n,m);
read(a,n,m,f);
int **b=alloc(m,n);
transpose(a,n,m,b);
print(b,m,n);
return 0;
}
转换为DataFrame
才能执行RDD
操作。
reduceByKey
一旦创建了RDD,就可以使用reduceByKey添加多列的值
val rows: RDD[Row] = df.rdd