在 Pandas 中,在處理包含重複值的資料時,使用 groupby 函數非常有用。但是,如果您希望在保留組中不同值的同時獲得總計值,則可能需要實作自訂聯接操作。
考慮以下範例:
col val A Cat A Tiger B Ball B Bat
使用時groupby函數對「col」中每個唯一值的「val」列求和,會產生以下輸出:
A CatTiger B BallBat
引入分隔符號(例如「-」)插入連接值,可以使用以下程式碼:
df.groupby(['col'])['val'].sum().apply(lambda x: '-'.join(x))
但是,這種方法會導致意外結果:
A C-a-t-T-i-g-e-r B B-a-l-l-B-a-t
問題出現此問題的原因是lambda函數接收到包含「val」列中的各個值的 Series對象,而不是連接的值
以下替代方法可用於實現所需的分隔符連接輸出:
df.groupby('col')['val'].agg('-'.join)
這提供了輸出:
col A Cat-Tiger B Ball-Bat Name: val, dtype: object
要轉換對列進行索引或多重索引,可以使用reset_index函數:
df1 = df.groupby('col')['val'].agg('-'.join).reset_index(name='new')
以上是如何有效地連接 Pandas Groupby 結果中的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!