簡體   English   中英

如果數據值列中的空值已經存在於另一行中,則使用該值填充該值

[英]Fill in empty value in a dataframe column with the same value if it already exists in another row

因此,我只是在嘗試一些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

我用字典嘗試了一些東西,但是遇到了這個錯誤:“系列”對象是可變的,因此不能進行哈希處理。 我還在另一個線程中讀到,遍歷熊貓數據幀不是很有效嗎?

所以我只是想知道你們將如何解決這個任務。 我只是希望能夠填寫指南,而無需一遍又一遍地手動復制和粘貼我的統計信息。 謝謝!

嘗試此操作,創建一系列帶有統計信息的項目,然后使用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

您可以按項目和Fillna分組

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM