我正在研究NFL数据集,并希望对df中的每个播放进行以下映射:
DistToRusher
)。>DistToRusher
列当前填充有玩家ID。我有一个像这样的defaultdict-of-dictionaries:
dist_dict = {play_id1: {player_id1: distance, player_id2: distance ...}, play_id2: {player_id1: distance, player_id2: distance ...}...}
这是我的代码:
def populate_DistToRusher_column(df): for play_id, players_dict in dist_dict.items(): df[df.PlayId == play_id].replace({'DistToRusher': players_dict}, inplace=True) return df
此代码运行,速度很慢(20-30s),并且不会更改
DistToRusher
列;当我检查df时,DistToRusher
仍然包含玩家ID号而不是距离。
这里是实际数据的玩具版本:
df = pd.DataFrame.from_dict({'PlayId': {0: 20170907000118,
1: 20170907000118,
2: 20170907000118,
22: 20170907000139,
23: 20170907000139,
24: 20170907000139},
'NflId': {0: 496723,
1: 2495116,
2: 2495493,
22: 496723,
23: 2495116,
24: 2495493},
'NflIdRusher': {0: 2543773,
1: 2543773,
2: 2543773,
22: 2543773,
23: 2543773,
24: 2543773},
'DistToRusher': {0: 496723,
1: 2495116,
2: 2495493,
22: 496723,
23: 2495116,
24: 2495493}})
dist_dict = {20170907000118: defaultdict(float,
{496723: 6.480871854928166,
2495116: 4.593310353111358,
2495493: 5.44898155621764}),
20170907000139: defaultdict(float,
{496723: 8.583355987025117,
2495116: 5.821151088917024,
2495493: 6.658686056573021})}
我正在研究NFL数据集,并希望为df中的每场比赛进行以下映射:我正在尝试在列(DistToRusher)中填充每个球员到该比赛冲锋者的距离... 。
我认为这是正确的,IIUC:
感谢@oppressionslayer!这就像一个魅力: