按列表大小排序Pandas数据帧而不是AZ

Der*_*ong 4 python pandas

我有一个如下所示的数据框:

username          group
user1             [A]
user2             [B, C]
user3             [A, B, C]
user4             [A, B]
Run Code Online (Sandbox Code Playgroud)

我希望结果看起来像这样:

username          group
user3             [A, B, C]
user4             [A, B]
user2             [B, C]
user1             [A]
Run Code Online (Sandbox Code Playgroud)

我查找了sort_values的文档,它似乎主要涵盖0-9或AZ排序..提前感谢

rje*_*rje 7

一种方法是创建一个具有长度的新列,然后按以下方式排序:

df['len'] = df['group'].str.len()
df.sort_values(by='len', ascending=False).drop(columns='len')
Run Code Online (Sandbox Code Playgroud)

输出是:

    group       
2   (A, B, C)   
1   (B, C)      
3   (A, B)      
0   (A,)        
Run Code Online (Sandbox Code Playgroud)

  • 让我感到困惑的是,这个复杂的库显然无法添加接受可调用的`key` 参数...... (2认同)
  • @timgeb这是因为DataFrames不是为存储任意python对象而设计的.仅仅因为你*可以*在DataFrame中放置一个列表并不意味着你*应该*.他们没有针对此进行优化. (2认同)