亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用字典從現有的列中生成新列

使用字典從現有的列中生成新列

胡子哥哥 2022-11-01 15:49:36
問題的本質是“在DataFrame中創建一個新列”,基于現有列'user_id'和字典{dict},它作為字典'user_id'列的值的鍵和字典的值類型。我有以下 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 中創建第三列,稱為關稅,所以如果我有一個 user_id 3,DataFrame 中的所有行都會有 a 類型的關稅。我找到了一種解決方案,但我不太明白它是如何實現的。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我在這行代碼之后得到的結果正是我想要的特別是我不明白這部分dict[x.user_id] 問題是我使用的方法是否有任何替代方法。而背后的邏輯是什么dict[x.user_id]。提前致謝
查看完整描述

1 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

像這樣寫得更清楚:

df['tariffs'] = df.apply(lambda row: dict[row['user_id']], axis=1)

lambda函數應用于數據幀的每一行(因為axis = 1),結果被連接并影響到新列df['tariffs']


查看完整回答
反對 回復 2022-11-01
  • 1 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號