Как перевернуть столбец в строку?

sof07

Новичок
Пользователь
Авг 3, 2020
14
1
3
Здравствуйте! Помогите дилетанту! Есть таблица. 1 колонка ФИО, 2 поощрение.
Пример:
ИвановБлагодарность
ПетровГрамота
ПетровБлагодарность
Иванов Благодарность
ИвановДеньги
ПетровГрамота
Иванов Грамота

Нужно выдернуть из 2 столбца виды поощрений, поместить их в строку(заголовки столбцов) и подсчитать каких и сколько у каждого поощрений


Вот так:


ФИОБлагодарностьГрамотаДеньги
Петров120
Иванов211

Как это сделать?
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Screenshot 2020-08-04 at 13.18.22.png
 
  • Мне нравится
Реакции: Student

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
df.groupby('поощрение').count().unstack()
 

sof07

Новичок
Пользователь
Авг 3, 2020
14
1
3
df.groupby('поощрение').count().unstack()
Спасибо! Но немного не то получилось, либо я что то не так делаю
Было
111.jpg
стало
222.jpg
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот вариант решения (скорее всего можно сделать проще):
Python:
import pandas as pd

data = {'ФИО': ['Иванов', 'Петров', 'Иванов', 'Петров', 'Иванов', 'Петров'],
        'Поощрение': ['Благодарность', 'Грамота', 'Благодарность',
                      'Благодарность', 'Деньги', 'Грамота']}
df = pd.DataFrame(data)

for item in df['Поощрение'].unique().tolist():
        df[item] = [int(n) for n in df.groupby('ФИО')['Поощрение'].apply(
                    lambda x: x.str.contains(item))]

print(df.groupby('ФИО').sum())
 

alext

Популярный
Пользователь
Май 10, 2020
288
66
28
Вот вариант решения (скорее всего можно сделать проще):
Python:
import pandas as pd

data = {'ФИО': ['Иванов', 'Петров', 'Иванов', 'Петров', 'Иванов', 'Петров'],
        'Поощрение': ['Благодарность', 'Грамота', 'Благодарность',
                      'Благодарность', 'Деньги', 'Грамота']}
df = pd.DataFrame(data)

for item in df['Поощрение'].unique().tolist():
        df[item] = [int(n) for n in df.groupby('ФИО')['Поощрение'].apply(
                    lambda x: x.str.contains(item))]

print(df.groupby('ФИО').sum())
Если в пандасах используешь цикл - делаешь что-то ОЧЕНЬ неправильно. Не надо так.
 

sof07

Новичок
Пользователь
Авг 3, 2020
14
1
3
Нормально, 2 строчки кода.... Мне нужно пробежаться по всем вордовским файлам в папке, вытащить оттуда таблицы с поощрениями, составить список поощрений нужного мне подразделения и сохранить в отдельный файл, плюс посчитать сколько всего и каких поощрений за год, для этого я на писал 100 строчек кода.Чувствую все это можно сделать строчек за 15...)))
Спасибо! Буду учиться))
 
  • Мне нравится
Реакции: Student

sof07

Новичок
Пользователь
Авг 3, 2020
14
1
3
Если в пандасах используешь цикл - делаешь что-то ОЧЕНЬ неправильно. Не надо так.
А не подскажете как из ворда сразу в пандас засунуть таблицу? А то у меня костыли, сначала временный список с нужной группой, потом общий список, потом в пандас и то, названия столбцов приходится ручками вводить, а хотелось бы сразу таблицу выдернуть с названиями столбцов
 

Форум IT Специалистов