2016-07-11 64 views
2

我有两个数据帧组成一个类似的信息类型。我试图合并它们并重新组织它们。这里是dataframes样本:熊猫使用sort_values排序2数据框然后按日期排序

df1 = 
Member Nbr Name-First  Name-Last  Date-Join 
20     Zoe  Soumas  2011-08-01 
3128    Julien  Bougie  2011-07-22 
3535    Michel  Bibeau  2015-02-18 
4116   Christopher  Duthie  2014-12-02 
4700    Manoj  Chauhan  2014-11-11 
4802     Anna  Balian  2014-07-26 
5004    Abdullah   Cekic  2012-03-12 
5130    Raymonde  Girard  2011-01-04 



df2 =  
Member Nbr Name-First  Name-Last  Date-Join 
3762    Robert  Ortopan  2010-01-31 
3762    Robert  Ortopan  2010-02-28 
3892   Christian   Burnet  2010-03-24 
3892   Christian   Burnet  2010-04-24 
5022    Robert  Ngabirano  2010-06-25 
5022    Robert  Ngabirano  2010-07-28 

什么,我想有是由Member Nbr,如果会员注册日期多次出现那么它将orgonized更加其中再一次排序的数据帧。因此,我将有:

df12 = 
Member Nbr Name-First  Name-Last  Date-Join 
20     Zoe   Soumas  2011-08-01 
3128    Julien   Bougie  2011-07-22 
3535    Michel   Bibeau  2015-02-18 
3762    Robert  Ortopan  2010-01-31 
3762    Robert  Ortopan  2010-02-28 
3892   Christian   Burnet  2010-03-24 
3892   Christian   Burnet  2010-04-24  
4116   Christopher   Duthie  2014-12-02 
4700    Manoj  Chauhan  2014-11-11 
4802    Anna   Balian  2014-07-26 
5004   Abdullah   Cekic  2012-03-12 
5022    Robert  Ngabirano  2010-06-25 
5022    Robert  Ngabirano  2010-07-28  
5130   Raymonde   Girard  2011-01-04 

我设法concatonate在df1底部哪个地方df2使用df12 = pd.concat([df1, df2], ignore_index=True)两个数据帧。使用后

df12.sort_values(by='Member Nbr', axis=0, inplace=True) 

成员按照升序排列,但那些出现不止一次(在不同的连接日期)的成员按降序排列。那就是

Member Nbr Name-First  Name-Last  Date-Join 
20     Zoe   Soumas  2011-08-01 
3128    Julien   Bougie  2011-07-22 
3535    Michel   Bibeau  2015-02-18 
3762    Robert  Ortopan  2010-02-28 # Wrongly sorted 
3762    Robert  Ortopan  2010-01-31 
3892   Christian   Burnet  2010-04-24 # Wrongly sorted 
3892   Christian   Burnet  2010-03-24  
4116   Christopher   Duthie  2014-12-02 
4700    Manoj  Chauhan  2014-11-11 
4802    Anna   Balian  2014-07-26 
5004   Abdullah   Cekic  2012-03-12 
5022    Robert  Ngabirano  2010-07-28 # Wrongly sorted 
5022    Robert  Ngabirano  2010-06-25  
5130   Raymonde   Girard  2011-01-04 

有没有办法让那些有多个加入日期的成员按日期升序排列?

回答

1

by参数可以是列的列表,以使数据帧是由第一列第一排序(以及用于通过第二列关系,以及用于由第三列等的关系)

df12.sort_values(by=['Member Nbr', 'Date-Join'], inplace=True) 

产生

Member Nbr Name-First Name-Last Date-Join 
0   20   Zoe  Soumas 2011-08-01 
1   3128  Julien  Bougie 2011-07-22 
2   3535  Michel  Bibeau 2015-02-18 
4   3762  Robert Ortopan 2010-01-31 
3   3762  Robert Ortopan 2010-02-28 
6   3892 Christian  Burnet 2010-03-24 
5   3892 Christian  Burnet 2010-04-24 
7   4116 Christopher  Duthie 2014-12-02 
8   4700  Manoj Chauhan 2014-11-11 
9   4802   Anna  Balian 2014-07-26 
10  5004  Abdullah  Cekic 2012-03-12 
12  5022  Robert Ngabirano 2010-06-25 
11  5022  Robert Ngabirano 2010-07-28 
13  5130  Raymonde  Girard 2011-01-04 

请注意,为使此功能正常工作,Date-Join列应为datetime类型。