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

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

當列具有重復值且值來自函數時,批量替換 pandas 數據框中的值

當列具有重復值且值來自函數時,批量替換 pandas 數據框中的值

揚帆大魚 2023-10-31 14:34:46
我有一個df包含以下數據類型的 pandas 數據框:+------+------+--+| Col1 | Col2 |  |+------+------+--+| abc  |  123 |  || abc  |  234 |  || cde  |  123 |  || cde  |  234 |  || ghi  |  455 |  || ghi  |  755 |  || ghi  |  123 |  |+------+------+--+在其他地方,我有一個函數,它從數據幀中獲取值作為輸入。所以,例如,my_func(arg1, arg2, str_from_df). 我想做的是將 Col1 中的值替換為return is notmy_func時的返回值。實現此目的的一種方法是循環遍歷數據幀,并一次更改 Col1 中的每個值。但這是一個非常緩慢的解決方案。在我的例子中,它的效率也很低,因為我只需要返回對每組.my_funcNonemy_funcCol1我可以同時更改所有abc內容嗎?Col1也就是說,測試 eg,my_func(arg1, arg2, df['Col2'].iat[0])是否是(對應于inNone的第一個實例的值),如果不是,則使用它的值替換中的所有值。數據幀接近 1M 行,并且函數本身并不無關緊要,因此我希望盡可能少地調用它。我還應該提到,我希望其他數據保持不變。這可以做到嗎?也許是一個函數?abcCol2abcCol1lambda
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

由于您想將函數應用于具有相同值 的行組col1,因此您可以使用groupby()和transform()


 df['Col1'] = df.groupby('Col1')['Col2'].transform(my_func)

另外,關于Nonevs value,你可以在likeCol1里面處理它my_func


def my_func(e):


  

  result = #your logic

  return result if result!=None else e 


查看完整回答
反對 回復 2023-10-31
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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