python按txt一列数据分组_python – 按一列的值排序,保持行按另一列的值分组

这篇博客讲述了如何在Python中使用Pandas对数据框进行分组和排序。作者首先展示了如何合并两个DataFrame,然后希望在保持D列分组的同时按A列降序排列。通过使用`pd.concat`的keys参数和`sort_index`方法,作者实现了所需的操作。
摘要由CSDN通过智能技术生成

我生成了两个(数百个)df,然后连接起来,然后我想按顺序排列具有相同列D名称的行:

In [120]: df_list[0]

Out[120]:

A B C D

0 0.564678 0.598355 0.606693 MA0835

1 0.066291 0.063587 0.662292 MA0835

2 0.000000 0.000000 0.010758 MA0835

3 0.000000 0.000000 0.097895 MA0835

4 0.000000 0.000000 0.136468 MA0835

In [121]: df_list[1]

Out[121]:

A B C D

0 0.628844 0.614492 0.570333 MA1002

1 0.317790 0.293189 0.239368 MA1002

2 0.000000 0.000000 0.000000 MA1002

3 0.000000 0.000000 0.000000 MA1002

4 0.000000 0.000000 0.000000 MA1002

In [122]: df = pd.concat(df_list[0:2])

In [122]: df

Out[122]:

A B C D

0 0.564678 0.598355 0.606693 MA0835

1 0.066291 0.063587 0.662292 MA0835

2 0.000000 0.000000 0.010758 MA0835

3 0.000000 0.000000 0.097895 MA0835

4 0.000000 0.000000 0.136468 MA0835

0 0.628844 0.614492 0.570333 MA1002

1 0.317790 0.293189 0.239368 MA1002

2 0.000000 0.000000 0.000000 MA1002

3 0.000000 0.000000 0.000000 MA1002

4 0.000000 0.000000 0.000000 MA1002

标准分类产生:

In [125]: df.sort_values('A',ascending=False)

Out[125]:

A B C D

0 0.628844 0.614492 0.570333 MA1002

0 0.564678 0.598355 0.606693 MA0835

1 0.317790 0.293189 0.239368 MA1002

1 0.066291 0.063587 0.662292 MA0835

2 0.000000 0.000000 0.010758 MA0835

3 0.000000 0.000000 0.097895 MA0835

4 0.000000 0.000000 0.136468 MA0835

2 0.000000 0.000000 0.000000 MA1002

3 0.000000 0.000000 0.000000 MA1002

4 0.000000 0.000000 0.000000 MA1002

但是,我想对A进行排序并保持D指定的行分组.这是所需的输出:

A B C D

0 0.628844 0.614492 0.570333 MA1002

1 0.317790 0.293189 0.239368 MA1002

2 0.000000 0.000000 0.000000 MA1002

3 0.000000 0.000000 0.000000 MA1002

4 0.000000 0.000000 0.000000 MA1002

0 0.564678 0.598355 0.606693 MA0835

1 0.066291 0.063587 0.662292 MA0835

2 0.000000 0.000000 0.010758 MA0835

3 0.000000 0.000000 0.097895 MA0835

4 0.000000 0.000000 0.136468 MA0835

我是否需要使用groupby,还是有其他我不熟悉的排序/分组技术?

解决方法:

使用pd.concat中的keys参数

keys = [(df.A.iloc[0], i) for i, df in enumerate(list_of_dfs)]

pd.concat(list_of_dfs, keys=keys) \

.sort_index(ascending=[False, True, True]) \

.reset_index(drop=True)

标签:python,sorting,pandas

来源: https://codeday.me/bug/20190702/1353358.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值