python - 删除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 的意思。目标是计算每组的学生人数。我认为我走在正确的道路上,即使有更简单的方法可以做到这一点。
提前感谢您的帮助,即使我知道我的问题有点模棱两可
解决方案
基于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()
推荐阅读
- c# - 如何在 C# (SOAP) 中发出 POST Web 请求
- java - Is there a way in Java to intercept the creation of a object by using Instrumentation?
- web-scraping - 使用 Scrapy 获取结构化输出
- c++ - OpenVINO 演示:多通道人脸检测演示;TBB LINK 2019 错误
- java - 是否有可能有一个“HotReload”基于 docker 的 java 环境?
- c++ - 构造函数与数组初始值设定项的歧义
- swiftui - 如何将全局应用程序状态桥接到模型视图(使用@ObservedObject)?
- docker - docker ps 仅列出名称和状态
- azure - Azure 函数保存到没有内容标题的文件
- python - 使用python将十六进制地址.xlsx文件转换为csv int