我有兩個資料框架
jedis = {jedi_id' 。["2", "4", "6", "1"],
'名字': ["Kylo", "Bastila", "Revan", "Steve from Minecraft"],
'掠奪的物品':}。
庫存={jedi_number'。["9"/span>, "4"/span> , "6"/span>, "1"/span>, "1"/span>, "0"/span>, "2"/span>, "6"/span>, "1"/span> , "55"/span>, "4"/span>,
"4", "0", "9"], 'Loot': ["Holocron", "Bantha Fodder", "Blaster", "Bantha Fodder", "Credit", "Bantha Fodder", "Blaster", "Bantha Fodder"/span>, "Holocron"/span>, "Blaster"/span>, "Holocron", "bread loaf", "Credits", "Holocron"]} 。
jedis_df = pd.DataFrame(jedis)
inventory_df = pd.DataFrame(inventory)
因此,在這個問題中,我需要通過jedi_df從jedis_df中取出所有的jedis,并確認它們在庫存中存在。 他們是存在于 inventory_df 中的。(ex.jedi_id 2存在于inventory)
一旦ID被確認并在jedis_df中,那么相關的掠奪物品將以相關的ID附加到jedis_df中
。
- 舉例說明。Revan在 "掠奪物品 "一欄中會有 "爆破器,天靈蓋 "的字樣,并在相應的絕地武士ID旁邊有相同的單元格 。
x = jedis_df.merge( inventory_df.groupby("jedi_number").sum()。 left_on="jedi_id"。 right_index=True。 how="left"。 )我試著合并這兩個表,但無法找出解決的方法。
我只知道如何在一個單元格中添加一個特定的對應的id,所以這對我來說是新的。
如果有人能幫助解決這個問題,我們將不勝感激
uj5u.com熱心網友回復:groupby.sum自動排除了非數字列,所以它不會像你期望的那樣在組內連接字串。
解決方案是在每個組的Loot值上運行',',join。
選項1: groupby.agg
inventory_df.groupby("jedi_number")['Loot'].agg(' , '.join)
選項2: groupby.apply
inventory_df.groupby("jedi_number")['Loot'].apply(lambda x: ', '.join(x))
這兩個選項產生了相同的輸出:
jedi_number
0 Bantha Fodder, Credits
1 Bantha Fodder, Credits, Holocron
2 爆破器
4 Bantha Fodder, Holocron, bread loaf
55 爆破器
6 爆破器, 班塔飼料
9 Holocron, Holocron
名稱: 戰利品, dtype: 物體
將inventory_df.groupby("jedi_number").sum()替換為x運算式中的任一選項,應該會產生所需的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/332595.html
標籤:
