创建函数以根据值从数据框中提取数据

Create function to extract data from dataframe based on value

我有一个包含电子竞技游戏数据的数据框:

index   result   map_index   map_games_total   map_win_rate   
0       win      1           3                 0.66           
1       win      3           2                 0.5            
2       loss     3           2                 0.5            
3       loss     2           1                 0.0           
4       win      1           3                 0.66           
5       loss     1           3                 0.66          
6       win      4           1                 1.0            

我想定义一个函数来自动识别三个最常玩的地图 (map = map_index) 并创建一个新的数据框,其中只包含每个已识别地图的那些地图的行。所以对于上面的例子,应该是这样的:

subdf_1

index   result   map_index   map_games_total   map_win_rate   
    0       win      1           3                 0.66           
    4       win      1           3                 0.66           
    5       loss     1           3                 0.66           

subdf_2

 index   result   map_index   map_games_total   map_win_rate   
    1       win      3           2                 0.5            
    2       loss     3           2                 0.5            

subdf_3

 index   result   map_index   map_games_total   map_win_rate   
    3       loss     2           1                 0.0            

subdf_4

 index   result   map_index   map_games_total   map_win_rate   
    6       win      4           1                 1.0            

谢谢。

你可以试试这个:

def subdf(df,column):
    list_sub_df=[]
    for value in df.column.unique():
        list_sub_df.append(df[df[column]==value])
    return(list_sub_df)

也许您之前必须按值排序

试试这个,

results = {}

for i, j in enumerate(df.map_win_rate.unique()):
    results[f'subdf_{i}'] = df[df.map_win_rate.eq(j)]

print(results['subdf_1'])

   index result  map_index  map_games_total  map_win_rate
1      1    win          3                2           0.5
2      2   loss          3                2           0.5

print(results['subdf_2'])

   index result  map_index  map_games_total  map_win_rate
3      3   loss          2                1           0.0

...