简体   繁体   English

Pandas - 使用排序索引过滤 dataframe

[英]Pandas - filter dataframe with sorted index

I have this df_player_means , with 5 items:我有这个df_player_means ,有 5 个项目:

Pierre-Emerick Aubameyang    0.629630
Sergio Aguero                0.592593
Danny Ings                   0.555556
Mohamed Salah                0.538462
Sadio Mane                   0.500000

And this df_player_colors , where all players and their respective colors appear multiple times, with 15k items:而这个df_player_colors ,其中所有玩家和他们各自的 colors 出现了多次,有 15k 个项目:

Andrew Robertson      #CE1317
Dejan Lovren          #CE1317
Joel Matip            #CE1317
Joseph Gomez          #CE1317
Nathaniel Phillips    #CE1317
                       ...   
Michail Antonio       #7C2C3B
Nathan Holland        #7C2C3B
Pablo Fornals         #7C2C3B
Robert Snodgrass      #7C2C3B
Tomas Soucek          #7C2C3B

How do I filter df_player_colors , (or map df_player_means to df_player_colors ), ending up with df_player_unique_colors , with players from df_player_means , in that exact sorted order, alongside their respective colors?我如何过滤df_player_colors ,(或 map df_player_meansdf_player_colors ),以df_player_unique_colors结束,来自df_player_means的球员,按照准确的排序顺序,以及他们各自的 colors?

I have tried:我试过了:

 players = df_player_means.index

 df_player_unique_colors = df_player_colors[df_player_colors.index.isin(players)]

But colors being mapped are wrong..但是映射的 colors 是错误的..

IIUC, try with join and drop_duplicates maybe if you have duplicated colors for same player IIUC,如果您为同一玩家复制了 colors,请尝试使用joindrop_duplicates

df_player_means.to_frame(name='mean')\
               .join(df_player_colors.to_frame(name='color'), how='left')\
               .drop_duplicates()

or maybe with loc like:或者可能像 loc 一样:

df_player_colors.loc[df_player_means.index]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM