使用Pandas对多个字符串列进行排序

2024-05-18 22:28:47 发布

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

我正在使用的数据帧有三个列,分别名为list1list2和{},它们分别基于“最佳居住地点”的三个列表。在

期望输出:

我想返回另一个列,系列或groupby,它考虑了所有列表中的位置后,显示了每个城市的总体排名,因此Edingburgh将在列表中名列前茅,而其他城市则会根据与每个列的排名接近程度来跟随。为了澄清,爱丁堡在list2和{}中排名第一。在

它看起来像这样:

1 Edingburgh 
2 Hart 
3 Orkney, London, Solihull 
4 Rutland, Bristol Hertfordshire 
5 Wychavon, Newcastle, Northumberland

基本上,我想看看当所有的名单都被考虑在内时,每个城市的总体排名,并学习如何用熊猫来实现这一点。在

我试过什么?

我希望有一种简单的方法来使用places2live.rank()之类的东西来排名,但是我不知道如何将它与字符串值一起使用。在

数据

^{pr2}$

Tags: 数据列表groupbylondon地点总体list2list1
1条回答
网友
1楼 · 发布于 2024-05-18 22:28:47

以下是一种方法:

cities = pd.Index(np.unique(df.values))
ranks = pd.Series([1] * len(cities), index=cities)

for column in df:
    ranks = ((ranks + df.reset_index().set_index(column)['index'])/2).fillna(ranks)

city_ranks = ranks.reset_index().groupby(0)['index'].apply(list).reset_index(drop=True)
city_ranks.index += 1
print(city_ranks)

[输出]

^{pr2}$

相关问题 更多 >

    热门问题