Python 如果值相同,则合并数据帧单元格

Python 如果值相同,则合并数据帧单元格,python,pandas,Python,Pandas,我试图创建一个新的数据框架,如果一个“类型”出现不止一次,那么这些行的“国家”单元格和“年份”单元格的内容将组合在一行中(“如何”列的行为类似于“类型”列:如果类型相似,则如何也一样) 我的pd数据框如下所示,df: type country year how 0 't1' 'UK' '2009' 'S' 1 't2' 'GER' '2010' 'D' 2 't2' 'USA' '2011' 'D' 3 't3' 'AUS'

我试图创建一个新的数据框架,如果一个“类型”出现不止一次,那么这些行的“国家”单元格和“年份”单元格的内容将组合在一行中(“如何”列的行为类似于“类型”列:如果类型相似,则如何也一样)

我的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()将删除第二个类似类型的行。是否有一些简便的方法来代替合并单元格(字符串)?提前感谢。

',一起使用。加入
作为聚合器:

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

获取每个单元格中的列表而不是字符串

def proc_df(df):
    df = df[['country', 'year']]
    return pd.Series(df.T.values.tolist(), df.columns)

df.groupby(['how', 'type']).apply(proc_df)