按唯一组数对列排序

2024-04-24 13:28:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图对kaggleHousing Prices数据集中的一部分分类数据进行排序。我正在尝试按唯一类别的数量对列进行排序。为了避免问题变得混乱,我在dataframe中加入了一小部分(总共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]

有没有更好的办法解决这个问题?我是否错过了实现这一目标的方法?你知道吗


Tags: 数据street目标df排序rlcategoriessorted
1条回答
网友
1楼 · 发布于 2024-04-24 13:28:09

您可以直接调用nunique,并使用结果对初始数据帧进行索引:

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

然而在您的小示例中,您的方法实际上比我的更快,尽管有点冗长。我会在您的实际数据帧上测试这个,因为您的方法没有错误,如果它提高了性能,我会改为使用它。我相信我的方法在大帧上应该更快,因为它避免了多次调用nunique。你知道吗

相关问题 更多 >