python - Pandas 使用 sort_values 对 2 个数据帧进行排序,然后按日期进行子排序

标签 python sorting pandas

我有两个包含相似类型信息的数据框。我正在尝试将它们合并并重新组织。这是数据帧的示例:

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 排序的数据框,如果该成员出现不止一次,那么它将按加入日期再次组织。所以我会:

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 

我已经设法使用 df12 = pd.concat([df1, df2], ignore_index=True) 将两个数据帧连接起来,将 df2 放在底部df1。使用后

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

有没有办法让加入日期不止一个的成员也按日期升序排列?

最佳答案

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。

关于python - Pandas 使用 sort_values 对 2 个数据帧进行排序,然后按日期进行子排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38299831/

相关文章:

python - Numpy 类型错误

python - pandas:使用map()根据从字典调用的范围分配值

python - 如何在 django admin 中处理这种特殊情况?

python - Pandas 正在打印比预期更多的行

java - 存储多个相关值进行排序的最有效方法?

algorithm - 根据与不同顺序的相同元素的另一个数组的比较对数组进行排序

python - 如何检查是否在 Python 中连接了 SQLite3 数据库?

bash - 使用 Bash 的两个列表之间的区别

python - pandas.concat 产生所有 NaN

python - 传递值的形状是 (2, 3),索引表示 (2, 1)