按数据框中逗号数对列排序

2024-09-30 06:25:29 发布

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

我有这样一个数据帧:

>>> df = pd.DataFrame({'id_police':['s123','s124','s125','s126','s127'],
                   'raison':['dog','cat','cow','dog, cat, cow','dog, cat'],
    })
>>> df
  id_police         raison
0      s123            dog
1      s124            cat
2      s125            cow
3      s126  dog, cat, cow
4      s127       dog, cat

我想按列raison按如下描述方式排序(ID被重置,但ID被保留):

  id_police         raison
0      s126  dog, cat, cow
1      s127       dog, cat
2      s123            dog
3      s124            cat
4      s125            cow

请帮忙,我想我需要一个lambda函数来实现这个


Tags: 数据iddfcatpddogcowpolice
2条回答

您可以使用count+argsort

df.iloc[(-df.raison.str.count(',')).argsort()]
Out[12]: 
  id_police         raison
3      s126  dog, cat, cow
4      s127       dog, cat
0      s123            dog
1      s124            cat
2      s125            cow

您可以使用sort_values来执行此操作,并在此之前为,创建计数列:

df['count'] = df.raison.str.count(',')
df = df.sort_values('count', ascending=False).reset_index(drop=True)

df = df.drop('count', axis=1)

print(df)
  id_police         raison
0      s126  dog, cat, cow
1      s127       dog, cat
2      s123            dog
3      s124            cat
4      s125            cow

相关问题 更多 >

    热门问题