1 回答

TA貢獻1853條經驗 獲得超18個贊
按順序參考您的問題(代碼如下):
我看起來像是
id
數據的唯一索引,因此您可以使用df.set_index('id')
它df.loc['1']
,例如通過玩家 ID 訪問數據。據我了解您的數據,每個字典中列出的所有字典
attacks
都是獨立的,從某種意義上說,不需要相應的玩家 ID(因為attacker_id
或defender_id
似乎足以識別數據)。因此,我建議不要處理包含列表的行,而是將這些數據交換到它自己的數據框中,這樣可以輕松訪問。一旦您存儲
attacks
在它自己的數據框中,您就可以簡單地比較索引以過濾掉舊數據。
下面是一些示例代碼來說明各個要點:
# Question 1.
df.set_index('id', inplace=True)
print(df.loc['1']) # For example player id 1.
# Question 2 & 3.
attacks = pd.concat(map(
lambda x: pd.DataFrame.from_dict(x).set_index('order'), # Is 'order' the right index?
df['attacks'].dropna()
))
# Question 2.
print(attacks[attacks['defender_id'] == '1']) # For example defender_id 1.
# Question 3.
old_attacks = attacks.iloc[:2] # For example.
new_attacks = attacks[~attacks.index.isin(old_attacks.index)]
print(new_attacks)
添加回答
舉報