我正在使用pandas
,并且我想计算符合特定条件的行数,但是我希望进行不同级别的计数。我的意思是,我有一个看起来或多或少像这样的表(简化版,原始表有更多列):
Value ID Method
CR 01 Basic
CD 03 Advanced
PD 03 Advanced
PD 02 Advanced
CR 02 Basic
现在,我想按ID
对事物进行分组,因为在新的Excel中,我将创建的每一列都将与之对应。因此,我想计算Method
中有Basic
行中有多少行,Advanced
中有多少行,然后我要计算Basic
中有多少行具有值{ {1}},CR
或CD
。简单地说,最后,我将创建一个新的Excel工作表,如下所示:
PD
我简单地开始如下:
ID 01 02 03
Total 1 2 2
Basic 1 1 0
CR 1 1 0
CD 0 0 0
PD 0 0 0
Advanced 0 1 2
CR 0 0 0
CD 0 0 1
PD 0 1 1
因此,这将根据需要将所有内容按import pandas as pd
df = pd.read_excel('./myfile.xlsx')
method = ['Basic', 'Advanced']
value = ['CR', 'CD', 'PD']
grouped = df.groupby(['ID'], as_index=False)
results = []
for _, g in grouped:
values = []
for m in method:
values.append(sum(g['Method'] == m))
results.append(values)
进行分组,然后按ID
对每个分组条目的行进行计数,我想我还可以包括第三个循环并检查{{ 1}}列。但是,我想这在某些时候会变得有些麻烦,如果我以后再有4个等级,该怎么办?在Method
中处理此问题的更好或推荐的方法是什么?
答案 0 :(得分:1)
如我所说的使用TabPart[0].nom[20]="alami";
typedef struct
{
char nom[20];
char prenom[30];
int dej;
int din;
int hot;
int num;
}Participant;
Participant TabPart[10];
TabPart[0].nom[20]="alami";
TabPart[0].prenom[30]="iliass";
TabPart[0].dej=0;
TabPart[0].din=1;
TabPart[0].hot=2;
TabPart[0].num=1;