DataFrameに列を追加したいけど、先頭に追加する方法がわからない!
途中に列を差し込む方法は無いの?
そんなお悩みを、Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
実行見本
事前準備
- pandasのインストール
今回の本題とは直接関係ありませんが、エクセルファイルの読み込みをする際に「pandas」が必要になります。
pandasのインストール方法
pandasを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install pandas
※pandasを使用したことがある場合は、このインストール作業は不要です。
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import pandas as pd
#▼エクセルファイルの読み込み
df = pd.read_excel('input.xlsx')
#▼先頭に列を追加
df.insert(0,'合計','計算中')
#df.insert(1, '合計', df['1月支出'] + df['2月支出'])
#▼書き出し
df.to_excel('output.xlsx', index = None)
df.insert(0,'合計','計算中')
解説
insert(任意の場所に列を追加)
>>7.df.insert(0,’合計’,’計算中’)
この一文で先頭に列を追加できます。
【 変数.insert(列を追加したい場所の列番号,’追加したい列の名前‘,’追加した列に入れる文字や数値‘) 】
「列を追加したい場所の列番号」ですが、先頭(一番左)に追加したい場合は「0」を指定します。
追加した場所に元々あった列(今回の場合は「班名」)は、右側に押し出されます。エクセルの列挿入をイメージしていただくとわかりやすいかと思います。
左から2番目や途中に列を追加することも可能です。
「列を追加したい場所の列番号」を「1」にすると左から2番目に追加できます。
また、
>>8.#df.insert(1, ‘合計’, df[‘1月支出’] + df[‘2月支出’])
と記述することで、追加と同時に計算することもできます。
しかし、一列空けて列を追加することはできません。
今回の場合、「input.xlsx」が元々3列(列名:班名、1月支出、2月支出 / 列番号:0、1、2)のため、4列目(列番号3)に追加することはできますが、ひとつ飛ばして5列目(列番号4)に追加することはできません。
▼右端に列を追加する方法はこちらで解説しています。今回より簡単!
その他の解説
「read_excel」などは下記記事で解説しております。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
index ○○ is out of bounds for axis 0 with size 0
右端よりもさらに右に列を追加しようとして出たエラーです。
「insert(5,・・・」の数字を少しずつ減らしてみてください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
PythonのDataFrameで先頭に列を追加する方法を解説いたしました。
先頭に列を追加=insert と覚えてください。
簡単な上にかなり便利ですので、ぜひ使ってみてください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!