列の移動
準備
1. パッケージのインストール
- R
- Python
- SQL
install.packages("tidyverse")
pip install pandas
なし。
2. パッケージの読み込み
- R
- Python
- SQL
library(tidyverse)
import pandas as pd
なし。
プログラム
R | Python | SQL | |
---|---|---|---|
1. 最初の位置に移動 | Awesome | Not Awesome | Awesome |
2. 最後の位置に移動 | Awesome | Not Awesome | Awesome |
3. 指定した列の前後の位置に移動 | Awesome | Not Awesome | - |
1. 最初の位置に移動
- R
- Python
- SQL
構文
df %>%
relocate(col1, col2)
サンプルコード
penguins %>%
relocate(bill_length_mm, bill_depth_mm)
# # A tibble: 344 × 7
# bill_length_mm bill_depth_mm species island flipper_length_mm body_mass_g sex
# <dbl> <dbl> <fct> <fct> <int> <int> <fct>
# 1 39.1 18.7 Adelie Torgersen 181 3750 male
# 2 39.5 17.4 Adelie Torgersen 186 3800 female
# 3 40.3 18 Adelie Torgersen 195 3250 female
# 4 NA NA Adelie Torgersen NA NA NA
# 5 36.7 19.3 Adelie Torgersen 193 3450 female
# 6 39.3 20.6 Adelie Torgersen 190 3650 male
# 7 38.9 17.8 Adelie Torgersen 181 3625 female
# 8 39.2 19.6 Adelie Torgersen 195 4675 male
# 9 34.1 18.1 Adelie Torgersen 193 3475 NA
# 10 42 20.2 Adelie Torgersen 190 4250 NA
# # ℹ 334 more rows
# # ℹ Use `print(n = ...)` to see more rows
構文
relocate_columns = ["col1", "col2"]
columns = relocate_columns + [col for col in df.columns if col not in relocate_columns]
df[columns]
サンプルコード
relocate_columns = ["bill_length_mm", "bill_depth_mm"]
columns = relocate_columns + [col for col in penguins.columns if col not in relocate_columns]
penguins[columns]
# bill_length_mm bill_depth_mm species island flipper_length_mm body_mass_g sex
# 0 39.1 18.7 Adelie Torgersen 181 3750 male
# 1 39.5 17.4 Adelie Torgersen 186 3800 female
# 2 40.3 18.0 Adelie Torgersen 195 3250 female
# 3 NaN NaN Adelie Torgersen NaN NaN NaN
# 4 36.7 19.3 Adelie Torgersen 193 3450 female
# .. ... ... ... ... ... ... ...
# 339 55.8 19.8 Chinstrap Dream 207 4000 male
# 340 43.5 18.1 Chinstrap Dream 202 3400 female
# 341 49.6 18.2 Chinstrap Dream 193 3775 male
# 342 50.8 19.0 Chinstrap Dream 210 4100 male
# 343 50.2 18.7 Chinstrap Dream 198 3775 female
# [344 rows x 7 columns]
構文
select
col1,
col2,
* except(col1, col2)
from tbl;
サンプルコード
select
bill_length_mm,
bill_depth_mm,
* except(bill_length_mm, bill_depth_mm)
from penguins;
# | bill_length_mm | bill_depth_mm | species | island | flipper_length_mm | body_mass_g | sex |
# | -------------- | ------------- | ------- | --------- | ----------------- | ----------- | ------ |
# | 39.1 | 18.7 | Adelie | Torgersen | 181 | 3750 | male |
# | 39.5 | 17.4 | Adelie | Torgersen | 186 | 3800 | female |
# | 40.3 | 18.0 | Adelie | Torgersen | 195 | 3250 | female |
# | null | null | Adelie | Torgersen | null | null | null |
# | 36.7 | 19.3 | Adelie | Torgersen | 193 | 3450 | female |
# | 39.3 | 20.6 | Adelie | Torgersen | 190 | 3650 | male |
# | 38.9 | 17.8 | Adelie | Torgersen | 181 | 3625 | female |
# | 39.2 | 19.6 | Adelie | Torgersen | 195 | 4675 | male |
# | 34.1 | 18.1 | Adelie | Torgersen | 193 | 3475 | null |
# | 42.0 | 20.2 | Adelie | Torgersen | 190 | 4250 | null |
# | ... | ... | ... | ... | ... | ... | ... |
2. 最後の位置に移動
- R
- Python
- SQL
構文
df %>%
relocate(col1, col2, .after = last_col())
サンプルコード
penguins %>%
relocate(bill_length_mm, bill_depth_mm, .after = last_col())
# # A tibble: 344 × 7
# species island flipper_length_mm body_mass_g sex bill_length_mm bill_depth_mm
# <fct> <fct> <int> <int> <fct> <dbl> <dbl>
# 1 Adelie Torgersen 181 3750 male 39.1 18.7
# 2 Adelie Torgersen 186 3800 female 39.5 17.4
# 3 Adelie Torgersen 195 3250 female 40.3 18
# 4 Adelie Torgersen NA NA NA NA NA
# 5 Adelie Torgersen 193 3450 female 36.7 19.3
# 6 Adelie Torgersen 190 3650 male 39.3 20.6
# 7 Adelie Torgersen 181 3625 female 38.9 17.8
# 8 Adelie Torgersen 195 4675 male 39.2 19.6
# 9 Adelie Torgersen 193 3475 NA 34.1 18.1
# 10 Adelie Torgersen 190 4250 NA 42 20.2
# # ℹ 334 more rows
# # ℹ Use `print(n = ...)` to see more rows
構文
relocate_columns = ["col1", "col2"]
columns = [col for col in df.columns if col not in relocate_columns] + relocate_columns
df[columns]
サンプルコード
relocate_columns = ["bill_length_mm", "bill_depth_mm"]
columns = [col for col in penguins.columns if col not in relocate_columns] + relocate_columns
penguins[columns]
# species island flipper_length_mm body_mass_g sex bill_length_mm bill_depth_mm
# 0 Adelie Torgersen 181 3750 male 39.1 18.7
# 1 Adelie Torgersen 186 3800 female 39.5 17.4
# 2 Adelie Torgersen 195 3250 female 40.3 18.0
# 3 Adelie Torgersen NaN NaN NaN NaN NaN
# 4 Adelie Torgersen 193 3450 female 36.7 19.3
# .. ... ... ... ... ... ... ...
# 339 Chinstrap Dream 207 4000 male 55.8 19.8
# 340 Chinstrap Dream 202 3400 female 43.5 18.1
# 341 Chinstrap Dream 193 3775 male 49.6 18.2
# 342 Chinstrap Dream 210 4100 male 50.8 19.0
# 343 Chinstrap Dream 198 3775 female 50.2 18.7
# [344 rows x 7 columns]
構文
select
* except(col1, col2),
col1,
col2
from tbl;
サンプルコード
select
* except(bill_length_mm, bill_depth_mm),
bill_length_mm,
bill_depth_mm
from penguins;
# | species | island | flipper_length_mm | body_mass_g | sex | bill_length_mm | bill_depth_mm |
# | ------- | --------- | ----------------- | ----------- | ------ | -------------- | ------------- |
# | Adelie | Torgersen | 181 | 3750 | male | 39.1 | 18.7 |
# | Adelie | Torgersen | 186 | 3800 | female | 39.5 | 17.4 |
# | Adelie | Torgersen | 195 | 3250 | female | 40.3 | 18.0 |
# | Adelie | Torgersen | null | null | null | null | null |
# | Adelie | Torgersen | 193 | 3450 | female | 36.7 | 19.3 |
# | Adelie | Torgersen | 190 | 3650 | male | 39.3 | 20.6 |
# | Adelie | Torgersen | 181 | 3625 | female | 38.9 | 17.8 |
# | Adelie | Torgersen | 195 | 4675 | male | 39.2 | 19.6 |
# | Adelie | Torgersen | 193 | 3475 | null | 34.1 | 18.1 |
# | Adelie | Torgersen | 190 | 4250 | null | 42.0 | 20.2 |
# | ... | ... | ... | ... | ... | ... | ... |
3. 指定した列の前後の位置に移動
- R
- Python
- SQL
構文
df %>%
relocate(col1, col2, .before = col3) # または .after = col3
サンプルコード
penguins %>%
relocate(bill_length_mm, bill_depth_mm, .before = island)
# # A tibble: 344 × 7
# species bill_length_mm bill_depth_mm island flipper_length_mm body_mass_g sex
# <fct> <dbl> <dbl> <fct> <int> <int> <fct>
# 1 Adelie 39.1 18.7 Torgersen 181 3750 male
# 2 Adelie 39.5 17.4 Torgersen 186 3800 female
# 3 Adelie 40.3 18 Torgersen 195 3250 female
# 4 Adelie NA NA Torgersen NA NA NA
# 5 Adelie 36.7 19.3 Torgersen 193 3450 female
# 6 Adelie 39.3 20.6 Torgersen 190 3650 male
# 7 Adelie 38.9 17.8 Torgersen 181 3625 female
# 8 Adelie 39.2 19.6 Torgersen 195 4675 male
# 9 Adelie 34.1 18.1 Torgersen 193 3475 NA
# 10 Adelie 42 20.2 Torgersen 190 4250 NA
# # ℹ 334 more rows
# # ℹ Use `print(n = ...)` to see more rows
構文
relocate_columns = ["col1", "col2"]
relocate_columns_droped_df = df.drop(columns=relocate_columns)
target_index = relocate_columns_droped_df.columns.get_loc("col3") # + 1 で後ろに追加
pd.concat(
[
relocate_columns_droped_df.iloc[:, :target_index],
df[relocate_columns],
relocate_columns_droped_df.iloc[:, target_index:]
],
axis=1
)
サンプルコード
relocate_columns = ["bill_length_mm", "bill_depth_mm"]
relocate_columns_droped_df = penguins.drop(columns=relocate_columns)
target_index = relocate_columns_droped_df.columns.get_loc("island")
pd.concat(
[
relocate_columns_droped_df.iloc[:, :target_index],
penguins[relocate_columns],
relocate_columns_droped_df.iloc[:, target_index:]
],
axis=1
)
# species bill_length_mm bill_depth_mm island flipper_length_mm body_mass_g sex
# 0 Adelie 39.1 18.7 Torgersen 181 3750 male
# 1 Adelie 39.5 17.4 Torgersen 186 3800 female
# 2 Adelie 40.3 18.0 Torgersen 195 3250 female
# 3 Adelie NaN NaN Torgersen NaN NaN NaN
# 4 Adelie 36.7 19.3 Torgersen 193 3450 female
# .. ... ... ... ... ... ... ...
# 339 Chinstrap 55.8 19.8 Dream 207 4000 male
# 340 Chinstrap 43.5 18.1 Dream 202 3400 female
# 341 Chinstrap 49.6 18.2 Dream 193 3775 male
# 342 Chinstrap 50.8 19.0 Dream 210 4100 male
# 343 Chinstrap 50.2 18.7 Dream 198 3775 female
# [344 rows x 7 columns]
SQL では実装できない。