熊猫按另一列中的值对一列进行排序

约翰·申

我有一个数据集,我想对它进行排序和分配排名。

假设它有两列,一列是年份,另一列是我要排序的列。

import pandas as pd
data = {'year': pd.Series([2006, 2006, 2007, 2007]), 
        'value': pd.Series([5, 10, 4, 1])}
df = pd.DataFrame(data)

我想按每年对“值”列进行排序,然后对其进行排名。我想拥有的是

data2= {'year': pd.Series([2006, 2006, 2007, 2007]), 
        'value': pd.Series([10, 5, 4, 1]),  
        'rank': pd.Series([1, 2, 1, 2]}
df2=pd.DataFrame(data2)

>>> df2
   rank  value  year
0     1     10  2006
1     2      5  2006
2     1      4  2007
3     2      1  2007
亚力山大

您可以先使用groupby,然后再使用rank使用withascending=False首先获得最大值)。您无需对进行排序groupby,因为结果将索引到数据框(性能稍快)。

df['yearly_rank'] = df.groupby('year', sort=False)['value'].rank(ascending=False)

>>> df.sort_values(['year', 'yearly_rank'])
   value  year  yearly_rank
1     10  2006            1
0      5  2006            2
2      4  2007            1
3      1  2007            2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫按另一列的平均值对一列的值进行排序

熊猫:将一列中的单词数按另一列的值排序

使用差异对列进行分组并在熊猫中按另一列对另一列进行排序

SQL按值对另一列进行排序

根据熊猫中的另一列对唯一值进行排序

根据一列中的值(以另一列为条件)按顺序对数据进行排序

在熊猫中对列进行排序,然后在保持上一列排序的同时对另一列进行排序

对一列进行排序,以使一列跟随另一列的值

如何对 Dataframe 中的 2 列进行排序,一列按降序排序,另一列按对应于第一列的字母顺序排序

按一列的值排序,使行按另一列的值分组

如何按一列排序,但如何根据非数字的另一列进行排序?

根据一列的相同值进行分组和排序,然后对这些组中的另一列进行排序

如何对多列进行切片并对熊猫中的另一列进行排序

Pyspark,按一列中的唯一值对另一列中的特定值进行分组

posgresql:为按日期排序的另一列中的每个不同值选择一列中的滞后值

按一列或另一列对熊猫数据框进行分组

按1列的值和另一列的颜色对动态范围的数据进行排序

如何按另一列对现有列的值进行排序?

熊猫Slinear插值按另一列分组

按另一列对一列进行排序的有效方法

在一列上按另一列对数据框进行排序-Pandas

在Pandas Dataframe中按一列排序,然后按另一列分组?

熊猫按一列分组将另一列的值连接为定界列表

仅使用标准库,按另一列的分组值中的一列的累积总数对文本文件进行排序?

按一列分组,然后在熊猫中查找另一列的总和和最大值

熊猫将一列中的列表项与另一列中的单个值进行比较

按列分组,对另一列进行排序,然后为python中的行分配等级

如何基于熊猫中的另一列数组对一列数组排序?

熊猫-按一列分组,按另一列排序,从第三列获取价值