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

对熊猫分组操作进行排序

楚和悌
2023-03-14
问题内容

如何对pandas groupby操作应用排序?下面的命令返回一个错误,指出“布尔”对象不可调用

import pandas as pd

df.groupby('cokey').sort('A')

cokey       A   B
11168155    18  56
11168155    0   18
11168155    56  96
11168156    96  152
11168156    0   96

问题答案:

通常,排序是在groupby键上执行的,并且您发现您无法调用sortgroupby对象,您可以做的是调用apply并传递DataFrame.sort函数并将列作为kwarg参数传递:

In [58]:

df.groupby('cokey').apply(pd.DataFrame.sort, 'A')
Out[58]:
               cokey   A    B
cokey                        
11168155 1  11168155   0   18
         0  11168155  18   56
         2  11168155  56   96
         3  11168155  96  152

另外,您可以在分组之前对df进行排序:

df.sort('A').groupby('cokey')

更新资料

对于不建议使用的版本0.17.0DataFrame.sort请参见docs,现在应使用DataFrame.sort_values

df.groupby('cokey').apply(pd.DataFrame.sort_values, 'A')

在这里在评论中添加@xgdgsc的答案;如果您需要设置升序标志。

df.groupby('cokey').apply(pd.DataFrame.sort_values, 'A', ascending=False)


 类似资料:
  • 问题内容: 我的数据框看起来像这样,只是更大了。 首先,我尝试对每个列进行单独排序。我试过玩类似的东西:但是最终只会出错。如何分别对每一列进行排序,以得到类似以下内容的结果: 其次,我希望将列中的行连接起来 在用’‘替换np.nan之后,我可以将所有内容与上面的行结合起来,但是结果一起被粉碎(’AB’),并且需要额外的步骤来清理(变成’A:B’之类)。 问题答案: 这是一种方法: 但是,您所做的有

  • 我想得到这样的东西 我用groupby关键字搜索了stackoverflow,没有找到与我类似的问题。

  • 问题内容: 我知道必须在某些地方回答此问题,但我找不到它。 问题 :groupby操作后对每个组进行采样。 问题答案: 应用lambda并使用param调用:

  • 问题内容: 我有一个熊猫数据框,如下所示: 我想按它排序,但该列只是一个。 我试图将列设置为日期对象,但是遇到了一种格式不需要的格式的问题。所需的格式为等。 因此,现在我试图找出如何使numpy将“美国”日期转换为ISO标准,以便可以使它们成为日期对象,以便可以对它们进行排序。 我该如何将这些美国日期转换为ISO标准,或者我在熊猫中缺少更直接的方法? 问题答案: 您可以用来转换为日期时间对象。它带

  • 我正在尝试按“百分比”对数据帧的内容进行排序。那种似乎不起作用。 代码-在此处输入图像描述

  • 问题内容: 我想对以下数据框进行排序: 我想对它进行排序,以便根据列表对LSE列进行重新排序: 当然,其他列也需要相应地重新排序。有没有办法在熊猫里做到这一点? 问题答案: pandas0.15版中对s的改进支持使您可以轻松做到这一点: 如果这只是临时排序,则可能不希望将LSE列保留为a ,但是如果您希望这种排序能够在不同的上下文中使用几次,则是一个很好的解决方案。 在更高版本的,中,已被替换为,