所以我只是想通过为我正在玩的游戏制作一种指南来练习一些 Python 并使用 pandas 数据帧。
我制作了一个电子表格,其中包含游戏中的所有英雄以及他们当前最高等级装备的名称。许多英雄共享相同的装备。现在我想在电子表格中添加一列以添加所有设备的统计信息。我手动输入了其中一些统计信息,并且希望能够填写重复项目的统计信息。
我导出了 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 数据帧效率不是很高?
所以我只是想知道你们会做什么来解决这个任务。我只是希望能够填写我的指南,而无需一遍又一遍地手动复制和粘贴我的统计数据。谢谢!
最佳答案
尝试一下,创建一系列具有统计信息的项目,然后使用 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
关于python - 如果数据框列中的空值已存在于另一行中,则用相同的值填充该空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53770016/