Заполните пустое значение в столбце датафрейма тем же значением, если оно уже существует в другой строке - PullRequest
0 голосов
/ 14 декабря 2018

Так что я просто пытаюсь попрактиковаться в Python и работаю с фреймами данных панд, создавая своего рода руководство для игры, в которую я играю.

Я составил таблицу со всеми героями в игре и названиями их текущего снаряжения максимального уровня.Многие герои используют одинаковое оборудование.Теперь я хочу добавить столбец в мою таблицу, чтобы добавить статистику всего оборудования.Я вручную ввел некоторые из этих статистических данных и хочу иметь возможность заполнить статистику дублирующихся элементов.

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

Hero Item     Stats
1    Item 1    10 HP, 10 Damage
1    Item 2    10 Armor, 10 Tenacity
1    Item 3    10% Healing, 10 Armor
1    Item 3    
2    Item 4    10 Skill Power
2    Item 5    10 HP, 10 Skill Power
2    Item 3
2    Item 1    
3    Item 1
3    Item 4
3    Item 5
3    Item 2    
4    Item 6    5 Crit
4    Item 1
4    Item 4
4    Item 7    25 Skill Power

У каждого героя есть 4 слота для предметов.В этом фрагменте 7 уникальных предметов.Некоторые предметы могут быть экипированы более одного раза одним героем, а некоторые предметы могут быть экипированы более чем одним героем.

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

Hero Item     Stats
1    Item 1    10 HP, 10 Damage
1    Item 2    10 Armor, 10 Tenacity
1    Item 3    10% Healing, 10 Armor
1    Item 3    10% Healing, 10 Armor
2    Item 4    10 Skill Power
2    Item 5    10 HP, 10 Skill Power
2    Item 3    10% Healing, 10 Armor
2    Item 1    10 HP, 10 Damage
3    Item 1    10 HP, 10 Damage
3    Item 4    10 Skill Power
3    Item 5    10 HP, 10 Skill Power
3    Item 2    10 Armor, 10 Tenacity
4    Item 6    5 Crit
4    Item 1    10 HP, 10 Damage
4    Item 4    10 Skill Power
4    Item 7    25 Skill Power

Я пробовал кое-что со словарями, но столкнулся с этой ошибкой: объекты 'Series' являются изменяемыми, поэтому их нельзя хэшировать.Я также прочитал в другой ветке, что перебор кадров данных pandas не очень эффективен?

Так что мне просто интересно, что вы все сделаете, чтобы решить эту задачу.Я просто хочу иметь возможность заполнять свое руководство, не копируя и не вставляя мою статистику снова и снова.Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы можете группировать товар и заполнять

df['Stats'] = df.groupby('Item').Stats.ffill().bfill()


   Hero Item    Stats
0   1   Item 1  10 HP, 10 Damage
1   1   Item 2  10 Armor, 10 Tenacity
2   1   Item 3  10% Healing, 10 Armor
3   1   Item 3  10% Healing, 10 Armor
4   2   Item 4  10 Skill Power
5   2   Item 5  10 HP, 10 Skill Power
6   2   Item 3  10% Healing, 10 Armor
7   2   Item 1  10 HP, 10 Damage
8   3   Item 1  10 HP, 10 Damage
9   3   Item 4  10 Skill Power
10  3   Item 5  10 HP, 10 Skill Power
11  3   Item 2  10 Armor, 10 Tenacity
12  4   Item 6  5 Crit
13  4   Item 1  10 HP, 10 Damage
14  4   Item 4  10 Skill Power
15  4   Item 7  25 Skill Power
0 голосов
/ 14 декабря 2018

Попробуйте, создайте серию этих предметов со статистикой, затем используйте map, чтобы получить статистику для всех предметов:

mapper = df[df.Stats.notnull()].set_index('Item')['Stats']
df['Stats'] = df['Item'].map(mapper)
print(df)

Вывод:

    Hero    Item                  Stats
0      1  Item 1       10 HP, 10 Damage
1      1  Item 2  10 Armor, 10 Tenacity
2      1  Item 3  10% Healing, 10 Armor
3      1  Item 3  10% Healing, 10 Armor
4      2  Item 4         10 Skill Power
5      2  Item 5  10 HP, 10 Skill Power
6      2  Item 3  10% Healing, 10 Armor
7      2  Item 1       10 HP, 10 Damage
8      3  Item 1       10 HP, 10 Damage
9      3  Item 4         10 Skill Power
10     3  Item 5  10 HP, 10 Skill Power
11     3  Item 2  10 Armor, 10 Tenacity
12     4  Item 6                 5 Crit
13     4  Item 1       10 HP, 10 Damage
14     4  Item 4         10 Skill Power
15     4  Item 7         25 Skill Power
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...