首页 > 解决方案 > 删除Python列表中每个元组的第一项

问题描述

我有一个这种格式的元组列表:

[("25.00", u"A"), ("44.00", u"X"),("17.00", u"E"),("34.00", u"Y")]

我想数一数我们收到每封信的次数。我已经创建了一个包含所有字母的排序列表,现在我想计算它们。

首先我在每个元组的第二项之前的 u 有问题,我不知道如何删除它,我想这是关于 enconding 的问题。

这是我的代码

# coding=utf-8
from collections import Counter 
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile

df = pd.read_excel('test.xlsx', sheet_name='Essais', skiprows=1)
groupes = [] 
students = [] 
group_of_each_letter = [] 
number_of_students_per_group = []
final_list = []

def print_a_list(list):
    for items in list:
        print(items)


for i in df.index:
    groupes.append(df['GROUPE'][i]) 
    students.append(df[u'ÉTUDIANT'][i]) 

groupes = groupes[1:] 
students = students[1:] 

group_of_each_letter = list(set(groupes)) 
group_of_each_letter = sorted(group_of_each_letter) 

z = zip(students, groupes) 
z = list(set(z)) 

final_list = list(zip(*z)) 

for j in group_of_each_letter:
    number_of_students_per_group.append(final_list.count(j))

print_a_list(number_of_students_per_group)

每个字母的组是一个列表,其中组字母不重复。

问题是我在最后使用 for 循环获得了正确数量的值,但列表中填充了“0”。

下面的屏幕截图是 excel 文件的示例。“ETUDIANT”栏的意思是“学生编号”,但我无法编辑文件,我必须处理它。GROUPE 显然是 GROUP 的意思。目标是计算每组的学生人数。我认为我走在正确的道路上,即使有更简单的方法可以做到这一点。

在此处输入图像描述

提前感谢您的帮助,即使我知道我的问题有点模棱两可

标签: pythonlisttuplesdata-manipulation

解决方案


基于kerwei的回答:

使用 groupby() 然后 nunique()

这将为您提供每个组中唯一学生 ID 的数量。

import pandas as pd

df = pd.read_excel('test.xlsx', sheet_name='Essais', skiprows=1)
# Drop the empty row, which is actually the subheader
df.drop(0, axis=0, inplace=True)
# Now we get a count of unique students by group
student_group = df.groupby('GROUPE')[u'ÉTUDIANT'].nunique()

推荐阅读