创建函数以根据值从数据框中提取数据
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
...
我有一个包含电子竞技游戏数据的数据框:
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
...