--- lang: ja-jp breaks: true --- # Python Pandas DataFrame 指定した項目の行を列に変換する 2021-07-26 ```python= df_matrix_transform = df[["adapter_id", "Timestamp", "SSID_id", "NetworkRssiInDecibelMilliwatts"]] display(df_matrix_transform) ``` ```shell= adapter_id Timestamp SSID_id NetworkRssiInDecibelMilliwatts 0 0 2021-07-23 15:16:46+09:00 309 -23 1 0 2021-07-23 15:16:53+09:00 309 -22 2 0 2021-07-23 15:16:59+09:00 309 -22 3 0 2021-07-23 15:17:05+09:00 309 -21 4 0 2021-07-23 15:17:11+09:00 309 -21 ... ... ... ... ... 316432 1 2021-07-24 10:57:40+09:00 684 -72 316433 1 2021-07-24 10:58:29+09:00 684 -73 316434 1 2021-07-24 11:08:04+09:00 684 -74 316435 1 2021-07-24 11:08:34+09:00 684 -76 316436 1 2021-07-24 11:16:44+09:00 684 -71 316437 rows × 4 columns ``` ```python= df_matrix_transform = df_matrix_transform.groupby(["adapter_id", "Timestamp", "SSID_id"]).max().unstack(level = "SSID_id") df_matrix_transform = df_matrix_transform.reset_index() display(df_matrix_transform) ``` ```shell= adapter_id Timestamp NetworkRssiInDecibelMilliwatts SSID_id 16 17 20 22 23 24 25 26 51 52 288 289 309 310 407 408 560 562 564 566 578 602 684 685 0 0 2021-07-23 15:16:46+09:00 -82.0 -80.0 NaN -83.0 -82.0 NaN -82.0 -82.0 NaN NaN -77.0 -83.0 -23.0 -27.0 -39.0 -41.0 NaN NaN NaN NaN -84.0 -84.0 NaN NaN 1 0 2021-07-23 15:16:53+09:00 -80.0 -80.0 NaN -84.0 -80.0 -85.0 -82.0 -83.0 -84.0 NaN -78.0 -85.0 -22.0 -27.0 -39.0 -46.0 -81.0 NaN NaN NaN NaN -84.0 NaN NaN 2 0 2021-07-23 15:16:59+09:00 -82.0 -78.0 NaN -82.0 -80.0 -83.0 -83.0 -81.0 NaN NaN -78.0 -82.0 -22.0 -30.0 -39.0 -43.0 NaN NaN -80.0 -82.0 -84.0 -85.0 NaN NaN 3 0 2021-07-23 15:17:05+09:00 NaN -79.0 NaN -82.0 -82.0 NaN NaN -82.0 -84.0 NaN -80.0 -83.0 -21.0 -29.0 -39.0 -43.0 NaN NaN NaN NaN -84.0 -84.0 NaN NaN 4 0 2021-07-23 15:17:11+09:00 -81.0 -79.0 -84.0 -83.0 -82.0 NaN -82.0 -80.0 NaN NaN -78.0 -84.0 -21.0 -37.0 -39.0 -43.0 NaN NaN NaN -82.0 -86.0 -84.0 NaN NaN ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 26941 1 2021-07-24 14:00:55+09:00 NaN -78.0 -80.0 NaN NaN NaN NaN -76.0 NaN NaN NaN NaN -27.0 -30.0 -27.0 -36.0 NaN NaN -79.0 -79.0 NaN NaN NaN NaN 26942 1 2021-07-24 14:01:01+09:00 NaN NaN NaN NaN -80.0 NaN NaN -77.0 NaN NaN NaN NaN -26.0 -30.0 -27.0 -37.0 NaN NaN -78.0 NaN NaN NaN NaN NaN 26943 1 2021-07-24 14:01:08+09:00 NaN -78.0 -80.0 NaN -78.0 -83.0 NaN -74.0 NaN NaN NaN NaN -28.0 -31.0 -27.0 -38.0 NaN NaN NaN NaN NaN NaN NaN NaN 26944 1 2021-07-24 14:01:14+09:00 NaN -76.0 NaN NaN NaN -83.0 NaN -72.0 NaN NaN NaN NaN -27.0 -32.0 -27.0 -38.0 NaN NaN NaN NaN NaN NaN NaN NaN 26945 1 2021-07-24 14:01:20+09:00 NaN -77.0 NaN NaN -80.0 -81.0 NaN -74.0 NaN NaN NaN NaN -27.0 -31.0 -28.0 -36.0 -79.0 -78.0 -78.0 -78.0 NaN NaN NaN NaN 26946 rows × 26 columns ``` :::info `unstack()` によって項目を変更したら、`reset_index()` を実行することで、扱いやすい形式となる。 ::: ###### tags: `Pandas` `Python` `DataFrame` `unstack`