按唯一组数对熊猫列进行排序

时间:2019-04-10 16:59:31

标签: python pandas kaggle

我正在尝试对kaggle Housing Prices数据集中的部分分类数据进行排序。我正在尝试按唯一类别的数量对列进行排序。为避免使问题混乱,我在数据框的一小部分(共80列)中演示了该问题。

    LotConfig    Street    MSZoning
0   Inside       Pave      RL
1   FR2          Pave      RL
2   Corner       Grvl      RL

我旨在对列进行排序以达到以下结果。

    MSZoning    Street    LotConfig    
0   RL          Pave      Inside       
1   RL          Pave      FR2          
2   RL          Grvl      Corner      

我当前正在使用以下代码。

sorted_categories =  sorted(df.columns, key = lambda col: df[col].nunique())
df = df[sorted_categories]

是否有更好的方法来解决此问题?我是否缺少熊猫方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以直接调用nunique并使用结果为您的初始DataFrame编制索引:

u = df.nunique().sort_values().index
df[u]

  MSZoning Street LotConfig
0       RL   Pave    Inside
1       RL   Pave       FR2
2       RL   Grvl    Corner

df.nunique()每列将返回一系列唯一值。

>>> df.nunique()
LotConfig    3
Street       2
MSZoning     1
dtype: int64

但是 ,在您的小示例中,您的方法实际上比我的方法要快,尽管更为冗长。我会在您实际的DataFrame上对此进行测试,因为您的方法是不正确的,并且如果它可以提高性能,我会选择使用它。我相信我的方法在大框架上应该会更快,因为它避免了多次调用nunique