我有一个这样的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 05: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 06: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 cow
https://stackoverflow.com/questions/55812901
复制相似问题