我正在尝试建立一个表,该表具有按子组划分的组,每个子组具有计数和平均值。例如,我要转换以下数据帧:
到这样一个表中,其中 interval 是一个较大的组,而 a thru i 列成为该组中的子组,相应子组的计数和平均值每个单元格:
我尝试了这个但没有成功:
答案 0 :(得分:2)
尝试。
#include <stdlib.h>
#include <stdio.h>
struct Node{
int Element;
struct Node *Next;
};
typedef struct Node *PtrToNode;
void PrintList( PtrToNode L ) {
PtrToNode P = L->Next;
printf("head -> ");
while( P != NULL ) {
printf("%d -> ", P->Element);
P = P->Next;
}
printf("NULL\n");
}
void Insert( int X, PtrToNode P ){
PtrToNode TmpCell = malloc( sizeof( struct Node ) );
TmpCell->Element = X;
TmpCell->Next = P->Next;
P->Next = TmpCell;
}
PtrToNode CreateList(int a[], int n){
int i;
PtrToNode header = malloc( sizeof( struct Node ) );
PtrToNode P= header;
header->Element = -1;
header->Next = NULL;
for(i=0; i<n; i++){
Insert(a[i], P);
P = P->Next;
}
return header;
}
void ReverseList( PtrToNode L1);
void main(){
int data1[]={3,18,7,21,4,14,10,8,12,17};
PtrToNode list = CreateList(data1, 10);
printf("original list: ");PrintList(list);
ReverseList(list);
printf("revsered list: ");PrintList(list);
}
void ReverseList( PtrToNode L1){
int i;
int array[10];
for(i=9; L1->Next != NULL; i--){
L1=L1->Next;
array[i]=L1->Element;
}
L1 = CreateList(array, 10);
printf("revsered list: ");PrintList(L1);
}
将df.groupby(['interval']).apply(lambda x : x.stack()
.groupby(level=-1)
.agg({'count', 'mean'}))
与groupby
一起用于每个组,然后apply
和stack
再与groupby
一起使用,以找到agg
和{ {1}}。
答案 1 :(得分:0)
将DataFrame.melt
与GroupBy.agg
和元组一起使用具有新列名称的聚合函数:
df1 = (df.melt('interval', var_name='source')
.groupby(['interval','source'])['value']
.agg([('cnt','count'), ('average','mean')])
.reset_index())
print (df1.head())
interval source cnt average
0 0 a 1 5.0
1 0 b 1 0.0
2 0 c 1 0.0
3 0 d 1 0.0
4 0 f 1 0.0
答案 2 :(得分:0)
以下代码解决了我所要求的问题:
.download {
text-align: center;
border-style: solid;
border-radius: 20px;
display: inline-block;
height: 250px;
width: 200px;
}
.button {
text-decoration: none;
color: white;
background-color: black;
padding: 12px 20px;
border-radius: 20px;
}
.container{
width: 424px;
height: 540;
margin: 0 auto;
}