[英]Combine pandas dataframe cells in case of identical values
我正在嘗試創建一個新的數據框,如果“類型”出現不止一次,則將這些行的“國家”單元格和“年”單元格的內容合並為一行(“如何”列的行為就像“類型”列:如果類型相似,方法也一樣)。
我的pd數據框如下所示,df:
type country year how
0 't1' 'UK' '2009' 'S'
1 't2' 'GER' '2010' 'D'
2 't2' 'USA' '2011' 'D'
3 't3' 'AUS' '2012' 'F'
4 't4' 'CAN' '2013' 'R'
5 't5' 'SA' '2014' 'L'
6 't5' 'RU' '2015' 'L'
df2應該如下所示:
type country year how
0 't1' 'UK' '2009' 'S'
1 't2' 'GER, USA' '2010, 2011' 'D'
2 't3' 'AUS' '2012' 'F'
3 't4' 'CAN' '2013' 'R'
4 't5' 'SA, RU' '2014, 2015' 'L'
我很確定有必要對“類型”(或類型和方式)進行分組。 例如,使用first()刪除第二個相似類型的行。 有一些方便的方法可以代替合並單元格(字符串)嗎? 提前致謝。
將groupby/agg
與', '.join
用作聚合器:
import pandas as pd
df = pd.DataFrame({'country': ['UK', 'GER', 'USA', 'AUS', 'CAN', 'SA', 'RU'],
'how': ['S', 'D', 'D', 'F', 'R', 'L', 'L'],
'type': ['t1', 't2', 't2', 't3', 't4', 't5', 't5'],
'year': ['2009', '2010', '2011', '2012', '2013', '2014', '2015']})
result = df.groupby(['type','how']).agg(', '.join).reset_index()
產量
type how country year
0 t1 S UK 2009
1 t2 D GER, USA 2010, 2011
2 t3 F AUS 2012
3 t4 R CAN 2013
4 t5 L SA, RU 2014, 2015
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.