Переиндексировать с Python - PullRequest
0 голосов
/ 05 июля 2018

Привет, у меня есть набор данных студентов, состоящий из их имен, предметов и оценок.

Каждый студент имеет 5 предметов для написания. Однако в приведенной ниже таблице отсутствуют данные для некоторых учащихся с точки зрения их предметов и оценок. Пожалуйста, найдите таблицу ниже:

Name    Subject Score
Harry   Math    4
Harry   Science 5
Harry   Social  3
Harry   French  5
Harry   Spanish 4
Steve   Math    5
Steve   Science 3
Steve   Social  5
Steve   French  4
Tom     Math    5
Tom     Science 4
Tom     Social  5

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

Name    Subject     Score
Harry   Math         4
Harry   Science      5
Harry   Social       3
Harry   French       5
Harry   Spanish      4
Steve   Math         5
Steve   Science      3
Steve   Social       5
Steve   French       4
Steve   Spanish      4

Здесь видно, что у Стива, Гарри и Тома есть оценки по всем 5 предметам.

1 Ответ

0 голосов
/ 05 июля 2018

Это, кажется, идеальное приложение reindex

При заданной настройке:

z=io.StringIO("""Name    Subject Score
Harry   Math    4
Harry   Science 5
Harry   Social  3
Harry   French  5
Harry   Spanish 4
Steve   Math    5
Steve   Science 3
Steve   Social  5
Steve   French  4
Tom     Math    5
Tom     Science 4
Tom     Social  5""")

df=pd.read_table(z,delim_whitespace=True)

Тогда

new_index = pd.MultiIndex.from_product([df['Name'].unique(), df['Subject'].unique()], names=['Name', 'Subject'])
df.set_index(['Name', 'Subject']).reindex(new_index)

                        Score
Name    Subject 
Harry   Math            4.0
        Science         5.0
        Social          3.0
        French          5.0
        Spanish         4.0
Steve   Math            5.0
        Science         3.0
        Social          5.0
        French          4.0
        Spanish         NaN
Tom     Math            5.0
        Science         4.0
        Social          5.0
        French          NaN
        Spanish         NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...