Создать новые строки в кадре данных со значениями из списка / словаря - PullRequest
0 голосов
/ 04 июня 2018

Я использую несколько фреймов данных, которые я буду комбинировать целочисленные значения, чтобы получить окончательный результат.Вроде как вычисление «итоговой оценки», скажем, с использованием, возможно, «тестового» веса и «HW», чтобы получить изображение.

В любом случае, я хотел бы использовать список значений индекса ипереберите каждый из фреймов данных, чтобы увидеть, существуют ли они в каждом.Если во фрейме данных нет «записи» для индекса или символа в этом фрейме данных, я хотел бы добавить строку для символа в фрейме данных, а затем назначить постоянное значение для каждой записи месяца.Фреймы данных, которые я просматриваю, имеют месяцы по столбцам и строки по символам.

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

my_list = 
['Sonic','Knuckles','Shadow','Tails','Amy']

Вот пример одного из фреймов данных, которые яЯ хотел бы добавить его к.

penalties_df = 
                       Jan 18  Feb 18  Mar 18  Apr 18
Character                                     
Sonic                  1.0     2.0     3.0    1.0
Knuckles               2.0     2.0     2.0    2.0
Amy                    1.0     2.0     1.0    1.0

Я ничего не получил от Shadow и Tails, поэтому у них нет строки.

Shadow                 xxx     xxx     xxx    xxx
Tails                  xxx     xxx     xxx    xxx

Мой желаемый вывод:

penalties_df = 
                           Jan 18  Feb 18  Mar 18  Apr 18
    Character                                     
    Sonic                  1.0     2.0     3.0    1.0
    Knuckles               2.0     2.0     2.0    2.0
    Shadow                 0.0     0.0     0.0    0.0
    Tails                  0.0     0.0     0.0    0.0
    Amy                    1.0     2.0     1.0    1.0

'xxx - это просто заполнители, чтобы указать, где я не получил ни одногоданные этого персонажа (Shadow и Tails).Я периодически запускаю свой код, и для случаев, когда я запускаю свой код до тех пор, пока не получу данные для символа, я хотел бы создать строку и присвоить значение 0, проверив, существует ли символ в кадре данных.

Я рассмотрел .append(), но у меня нет существующего фрейма данных для добавления к penalties_df.Я только хочу создавать новые строки.

Могу ли я создать словарь для доступа по этому сценарию?Я бы подумал, что мой словарь будет примерно таким, но было бы излишним иметь набор повторяющихся цифр 0 (у меня есть только часть того, что я бы использовал здесь для краткости моего вопроса):

penalties_none = {
        "Sonic" : 0,
        "Knuckles" : 0,
        "Shadow" : 0,
        "Tails" : 0,
        "Amy" : 0,
    }

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

Я думаю, вам нужно reindex функция:

my_list = ['Sonic','Knuckles','Shadow','Tails','Amy']

penalties_df = penalties_df.reindex(mylist, fill_value = 0)
0 голосов
/ 04 июня 2018

Вам необходимо получить различия в именах между df.index и my_list.Затем вам нужно сделать df с этими различиями и добавить к вашему основному df.

df.append(pd.DataFrame(index=list(set(my_list) - set(df.index)))).fillna(0)

Вывод:

res = df.append(pd.DataFrame(index=list(set(my_list) - set(df.index)))).fillna(0)
res.index.name='Character'

Вывод:

             Apr_18  Feb_18  Jan_18  Mar_18
Character                                
Sonic         1.0     2.0     1.0     3.0
Knuckles      2.0     2.0     2.0     2.0
Amy           1.0     2.0     1.0     1.0
Tails         0.0     0.0     0.0     0.0
Shadow        0.0     0.0     0.0     0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...