問(wèn)題的本質(zhì)是“在DataFrame中創(chuàng)建一個(gè)新列”,基于現(xiàn)有列'user_id'和字典{dict},它作為字典'user_id'列的值的鍵和字典的值類(lèi)型。我有以下 DataFrame df。 df = pd.DataFrame({"user_id" : [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5], "value" : [0, 100, 50, 0, 25, 50, 100, 0, 7, 8, 20]}) print(df) | user_id | value _________________0 | 1 | 0 1 | 2 | 100 2 | 2 | 50 3 | 3 | 0 4 | 3 | 25 5 | 3 | 50 6 | 4 | 100 7 | 4 | 0 8 | 4 | 7 9 | 4 | 8 10 | 5 | 20 另外,我有一本字典,它是dict = {1 : 'type_a', 2: 'type_b', 3: 'type_a', 4: 'type_b', 5: 'type_a'}我的想法是在我的 DataFrame df 中創(chuàng)建第三列,稱(chēng)為關(guān)稅,所以如果我有一個(gè) user_id 3,DataFrame 中的所有行都會(huì)有 a 類(lèi)型的關(guān)稅。我找到了一種解決方案,但我不太明白它是如何實(shí)現(xiàn)的。df['tariffs'] = df.apply(lambda x: dict[x.user_id], axis=1)print(df) | user_id | value | _________________________0 | 1 | 0 |type_a1 | 2 | 100 |type_b2 | 2 | 50 |type_b3 | 3 | 0 |type_a4 | 3 | 25 |type_a5 | 3 | 50 |type_a6 | 4 | 100 |type_b7 | 4 | 0 |type_b8 | 4 | 7 |type_b9 | 4 | 8 |type_b10 | 5 | 20 |type_a我在這行代碼之后得到的結(jié)果正是我想要的特別是我不明白這部分dict[x.user_id] 問(wèn)題是我使用的方法是否有任何替代方法。而背后的邏輯是什么dict[x.user_id]。提前致謝
1 回答

幕布斯7119047
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
像這樣寫(xiě)得更清楚:
df['tariffs'] = df.apply(lambda row: dict[row['user_id']], axis=1)
lambda函數(shù)應(yīng)用于數(shù)據(jù)幀的每一行(因?yàn)閍xis = 1),結(jié)果被連接并影響到新列df['tariffs']
添加回答
舉報(bào)
0/150
提交
取消