3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

列名変更あれこれ

Posted at

1行目の列昇格だけではうまく裁けないケースがあります。そこで、列昇格以外で、複数列をまとめて列名変更するコードを書いてみました。
分解すれば、UIでも出来るのかもしれませんが、試してません。m(_)m

例1:最初の列以外を昇格したい

例えば、「フォルダから」メニューで取ってきて、下図のようになった場合。
フォルダ取り込み後の様子.png
ファイル名を列名にあげてしまうと、こうなります。
ただの列名昇格.png

これだと、先頭列を用いた処理が入っているクエリは、「1901.csv」が先頭でなくなったとか、消した途端に、エラーになってしまいます。

例1のコード

注意事項
 #"Changed Type"・・・対象となるテーブルの名前がこれだったというだけです。都度、適当に変えてください。
 List.Skipをかけた2つ目のリスト・・・この例では3行目(0始まりで2番目)に、列名にしたい値があるので、{2}としています。

列名差し替え例
= Table.RenameColumns(#"Changed Type",
                    List.Zip({ List.Skip(Table.ColumnNames(#"Changed Type"),1),
                               List.Skip(Record.ToList(#"Changed Type"{2}),1)
                              }
                    )
    )

結果がこちら↓
完成図.png

List.Zip()について

波括弧で囲った各リストについて、同じ要素位置ごとにリストにくくりなおす関数です。
上のコードを分解して実行してみたのが下図。
LISTZIP.png

例2:DateTime表示でなくて、日にちだけの列名にしたい

 下図のように日付と数値が両方あると、日付はDateTimeの表示になってしまうようです。これではそのまま列名に昇格したくないですね。
時刻が変な例.png

例2のコード

 #"Changed Type"は例1と同じく、対象となるテーブルの名前なので、適当に変えてください。
また、この例では1行目(0始まりで2番目)に、列名にしたい値があるので、{2}としています。

列名差し替えその2
= Table.RenameColumns(#"Changed Type",
                    List.Zip({
                              Table.ColumnNames(#"Changed Type"),
                              List.FirstN(Record.ToList(#"Changed Type"{0}),2)
                              & List.Transform(List.Skip(Record.ToList(#"Changed Type"{0}),2),
                                               each DateTime.ToText(_,"yyyy/M/d")
                                )
                    })
    )

↓完成図(突然小さくてすみません)
時刻版の完成図.png

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?