我有一個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
添加回答
舉報
0/150
提交
取消