Удалить первый элемент каждого кортежа в списке в Python - PullRequest
0 голосов
/ 04 марта 2019

У меня есть список кортежей в этом формате:

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

Я хочу посчитать, сколько раз у нас есть каждая буква.Я уже создал отсортированный список со всеми буквами, и теперь я хочу их подсчитать.

Прежде всего, у меня проблема с символом u перед вторым элементом каждого кортежа, я не знаю, как удалитьэто, я думаю, это что-то об окончании.

Вот мой код

# 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» означает «Номер студента», но я не могу отредактировать файл, я должен разобраться с ним.ГРУППА означает ГРУППА, очевидно.Цель состоит в том, чтобы посчитать количество студентов в группе.Я думаю, что я на правильном пути, даже если есть более простые способы сделать это.

enter image description here

Заранее благодарю за помощь, даже если я знаю, что мой вопрос немного двусмысленный

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Построение ответа kerwei:

Используйте groupby (), а затем nunique ()

Это даст вам количество уникальных идентификаторов учеников в каждой группе.

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()
0 голосов
/ 04 марта 2019

Я думаю, что groupby.count () должно быть достаточно.Он подсчитает количество вхождений вашего письма GROUPE в кадре данных.

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 students by group
sub_student_group = df.groupby(['GROUPE','ETUDIANT']).count().reset_index()

>>>sub_student_group
   GROUPE  ETUDIANT
0       B        29
1       L        88
2       N        65
3       O        27
4       O        29
5       O        34
6       O        35
7       O        54
8       O        65
9       O        88
10      O        99
11      O       114
12      O       122
13      O       143
14      O       147
15      U       122

student_group = sub_student_group.groupby('GROUPE').count()

>>>student_group
        ETUDIANT
GROUPE
B              1
L              1
N              1
O             12
U              1
...