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