{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport pandas as pd","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-12-18T13:14:44.583420Z","iopub.execute_input":"2022-12-18T13:14:44.584296Z","iopub.status.idle":"2022-12-18T13:14:45.818871Z","shell.execute_reply.started":"2022-12-18T13:14:44.584195Z","shell.execute_reply":"2022-12-18T13:14:45.817926Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Using code from https://www.kaggle.com/code/anupamakate/nfl-player-contact-detection-getting-started to see if it fixes the terrible public leaderboard score.","metadata":{}},{"cell_type":"code","source":"def compute_distance(df, tr_tracking, merge_col=\"datetime\"):\n    \"\"\"\n    Merges tracking data on player1 and 2 and computes the distance.\n    \"\"\"\n    df_combo = df.astype({\"nfl_player_id_1\": \"str\"})\\\n                  .merge(tr_tracking.astype({\"nfl_player_id\": \"str\"})[[\"game_play\", \n                                                                       merge_col, \n                                                                       \"nfl_player_id\", \n                                                                       \"x_position\", \n                                                                       \"y_position\"]],\n                         left_on=[\"game_play\", merge_col, \"nfl_player_id_1\"],\n                         right_on=[\"game_play\", merge_col, \"nfl_player_id\"],\n                         how=\"left\")\\\n                 .rename(columns={\"x_position\": \"x_position_1\", \n                                  \"y_position\": \"y_position_1\"})\\\n                 .drop(\"nfl_player_id\", axis=1)\\\n                 .merge(tr_tracking.astype({\"nfl_player_id\": \"str\"})[[\"game_play\", \n                                                                      merge_col, \n                                                                      \"nfl_player_id\", \n                                                                      \"x_position\", \n                                                                      \"y_position\"]],\n                        left_on=[\"game_play\", merge_col, \"nfl_player_id_2\"],\n                        right_on=[\"game_play\", merge_col, \"nfl_player_id\"],\n                        how=\"left\")\\\n                 .drop(\"nfl_player_id\", axis=1)\\\n                 .rename(columns={\"x_position\": \"x_position_2\", \n                                  \"y_position\": \"y_position_2\"})\\\n                 .copy()\n\n    df_combo[\"distance\"] = np.sqrt(np.square(df_combo[\"x_position_1\"] - df_combo[\"x_position_2\"]) \\\n                                 + np.square(df_combo[\"y_position_1\"] - df_combo[\"y_position_2\"]))\n\n    return df_combo\n\ndef expand_contact_id(df):\n    \"\"\"\n    Splits out contact_id into seperate columns.\n    \"\"\"\n    df[\"game_play\"] = df[\"contact_id\"].str[:12]\n    df[\"step\"] = df[\"contact_id\"].str.split(\"_\").str[-3].astype(\"int\")\n    df[\"nfl_player_id_1\"] = df[\"contact_id\"].str.split(\"_\").str[-2]\n    df[\"nfl_player_id_2\"] = df[\"contact_id\"].str.split(\"_\").str[-1]\n    return df","metadata":{"execution":{"iopub.status.busy":"2022-12-18T13:43:29.230966Z","iopub.execute_input":"2022-12-18T13:43:29.231368Z","iopub.status.idle":"2022-12-18T13:43:29.243757Z","shell.execute_reply.started":"2022-12-18T13:43:29.231333Z","shell.execute_reply":"2022-12-18T13:43:29.242747Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub = pd.read_csv(\"../input/nfl-player-contact-detection/sample_submission.csv\")\n\ntest = pd.read_csv('../input/nfl-player-contact-detection/test_player_tracking.csv',\n                   usecols=['game_play','game_key','play_id','step','nfl_player_id','x_position','y_position'])\n\nsub = expand_contact_id(sub)\nss_dist = compute_distance(sub, test, merge_col=\"step\")\n\nsubmission = ss_dist[[\"contact_id\", \"distance\"]].copy()\nsubmission[\"contact\"] = (submission[\"distance\"] <= 1).astype(\"int\")\nsubmission = submission.drop('distance', axis=1)\nsubmission[[\"contact_id\", \"contact\"]].to_csv(\"submission.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2022-12-18T13:45:54.180491Z","iopub.execute_input":"2022-12-18T13:45:54.180924Z","iopub.status.idle":"2022-12-18T13:45:55.002068Z","shell.execute_reply.started":"2022-12-18T13:45:54.180890Z","shell.execute_reply":"2022-12-18T13:45:55.000875Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}