我有一个这样的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进行排序( ID被重置,但id_police被保留):
id_police raison
0 s126 dog, cat, cow
1 s127 dog, cat
2 s123 dog
3 s124 cat
4 s125 cow请帮忙,我想我需要一个lambda函数.
发布于 2019-04-23 13:58:03
您可以使用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发布于 2019-04-23 14:05:06
您可以为此使用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 cowhttps://stackoverflow.com/questions/55812901
复制相似问题