我目前正在研究 Python - Pandas 專案。
我有這個資料幀:

我想細化這個資料框,讓每個名稱有一行,并帶有傷害的總和。這其實沒問題。
真正的問題是我也想保留所有列。Ally只能是“T”,而EncId永遠是一樣的,這樣處理就OK了。但對于 Duration 和 Job 來說,則是另外一回事了。
例如,這里我想保留 Job 如果不是 0,并保留最長的持續時間。
我真的想不出如何處理這個。我想念一些方法論。
提前感謝您的時間:)
uj5u.com熱心網友回復:
使用groupby_agg:
df = df.groupby('Name', as_index=False) \
.agg({'EncId': 'first', 'Ally': 'first', 'Name': 'first',
'Duration': 'max', 'Job': 'max', 'Damage': 'max'})
輸出:
>>> df
EncId Ally Name Duration Job Damage
0 91513775 T Naaru Segawa 203 Smn 2274680
設定:
df = pd.DataFrame(
{'EncId': [91513775, 91513775],
'Ally': ['T', 'T'],
'Name': ['Naaru Segawa', 'Naaru Segawa'],
'Duration': [191, 203],
'Job': ['0', 'Smn'],
'Damage': [514680, 2274680]})
print(df)
# Output:
EncId Ally Name Duration Job Damage
0 91513775 T Naaru Segawa 191 0 514680
1 91513775 T Naaru Segawa 203 Smn 2274680
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312996.html
上一篇:替換兩個資料幀之間的單個單元格值
