Столбец заказа по количеству запятых в Pandas DataFrame - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть DataFrame, подобный этому:

>>> 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 таким образом, как DESC (и идентификатор сбрасывается, но id_police сохраняется):

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

Пожалуйста, помогите, я думаю, мне нужна lambda функция для этого ...

Ответы [ 2 ]

4 голосов
/ 23 апреля 2019

Вы можете использовать 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
0 голосов
/ 23 апреля 2019

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...