python - 如果数据框列中的空值已存在于另一行中,则用相同的值填充该空值

标签 python pandas dataframe

所以我只是想通过为我正在玩的游戏制作一种指南来练习一些 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/

相关文章:

python - py::vectorize + type_caster = NumPy 类型信息缺失

python - 当我使用 PyInstaller 时,为什么我的库会出现 platformdirs.mac 错误?

python - 保留电子邮件域但删除 TLD

python - Pandas 中的数据处理

python - 每个日期的聚合数据帧值

python - 迭代数据框列

python - 如何解释 posix_ipc::MessageQueue::receive() 的返回?

python - 为什么 django-nose 运行测试两次?

python - 如果多列包含相同的数据但互换了,则从 pandas DataFrame 中删除行

python - Pandas 计算 str 系列中的频率