当前位置: 首页 > 面试题库 >

Python-如何从一列中排序pandas数据框

宗政英才
2023-03-14
问题内容

我有一个像这样的数据框:

print(df)

        0          1     2
0   354.7      April   4.0
1    55.4     August   8.0
2   176.5   December  12.0
3    95.5   February   2.0
4    85.6    January   1.0
5     152       July   7.0
6   238.7       June   6.0
7   104.8      March   3.0
8   283.5        May   5.0
9   278.8   November  11.0
10  249.6    October  10.0
11  212.7  September   9.0

如你所见,月份不是按日历顺序排列的。因此,我创建了第二列以获取与每月(1-12)相对应的月份数。从那里,如何根据日历月的顺序对数据框进行排序?


问题答案:

用于sort_values按特定列的值对df进行排序:

In [18]:
df.sort_values('2')

Out[18]:
        0          1     2
4    85.6    January   1.0
3    95.5   February   2.0
7   104.8      March   3.0
0   354.7      April   4.0
8   283.5        May   5.0
6   238.7       June   6.0
5   152.0       July   7.0
1    55.4     August   8.0
11  212.7  September   9.0
10  249.6    October  10.0
9   278.8   November  11.0
2   176.5   December  12.0

如果要按两列排序sort_values,请将列标签列表传递给,并按排序优先级对列标签进行排序。如果使用df.sort_values(['2', '0']),则结果将按列2然后按列排序0。当然,对于这个示例,这实际上没有任何意义,因为其中的每个值df['2']都是唯一的。



 类似资料:
  • 如您所见,月份不按日历顺序排列。所以我创建了第二列来获取每个月(1-12)对应的月份号。从那里,我如何根据日历月份的顺序对此数据帧进行排序?

  • 问题内容: 我正在尝试通过降序对数据框进行排序。我在升序参数中输入了“ False”,但我的命令仍然在升序。 我的代码是: 但输出是 问题答案: 编辑:这已经过时,请参阅@Merlin的答案。 是非空 列表 ,与。您应该写:

  • 问题内容: 我有,其中一列包含月份名称。 如何使用字典进行自定义排序,例如: 问题答案: 首先,将月份列设为分类,然后指定要使用的顺序。 现在,当你对月份列进行排序时,它将相对于该列表进行排序: 注意:如果值不在列表中,它将被转换为NaN。 对于那些有兴趣的人来说,是一个较旧的答案 你可以创建一个中间系列,并set_index在此基础上: 如前所述,在新的熊猫中,Series可以replace更优

  • 问题内容: df =DataFrame({‘a’:[1,2,3,4],’b’:[2,4,6,8]}) >>> df[‘x’]=df.a + df.b >>> df[‘y’]=df.a - df.b >>> df a b x y 0 1 2 3 -1 1 2 4 6 -2 2 3 6 9 -3 3 4 8 12 -4 现在,我想重新排列列顺序,按如下方式使“ x”,“ y”列成为第一列和第二列: 但

  • 问题内容: 我试图弄清楚如何以一种聪明的方式对由于groupby聚合而生成的系列进行排序。 我像这样生成DataFrame的聚合: 这导致了一个系列。我现在尝试按值对它进行排序,但是会出现错误: 然后,我尝试创建一个副本: 我怎样才能使这种工作? 问题答案: 使用,即。[ 熊猫v0.17 + ] (非常老的答案,v0.17之前/ 2015) 大熊猫用于使用方法:。

  • 问题内容: 我有一个包含很多列的数据框。现在,我只想选择某些列。我将要选择的所有列名称保存到Python列表中,现在我想根据该列表过滤数据框。 我一直在尝试做: 其中list包含我要选择的所有列名。 但是我得到了错误: 任何帮助吗? 问题答案: 您可以删除一个: 也最好使用其他名称,例如: 看起来工作正常,我只尝试简化一下: :