
まくまく
プラグラミング言語「PYTHON」を使ってみよう!!業務自動化・効率化の実例を踏まえ、解説できればと思っています。対象は、プログラムを学び始めた初心者向けとなります。
先日アップした「csvの値を1行ずつエクセルへ転記する方法」の続きです。
今回の記事では特定の列のみをエクセルへ転記するプログラムを解説しようと思います。
今回の内容
- csvファイルに入力された特定の列のみをエクセルへ転記する
使用するのはopenpyxl
前回同様に使用するのは、エクセルファイルを読み書きできるPythonライブラリ「openpyxl」です。
openpyxlのなかのDataframe_to_rowという関数(データを1行ずつ取得できる関数)を使用します。
ここではopenpyxlがインストールされているのを前提として書き進めていきます。
- openpyxlはエクセルを扱うことができるライブラリです
- openpyxlの関数「Dataframe_to_row」でデータを1行ずつ取得します
- PandasやNumpyで使用可能です
サンプルコード
import pandas as pd
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
wb=Workbook()
ws=wb.active
df=pd.read_csv('voltage.csv',encoding='shift_jis')
v_df=df[['voltage']]
for row in dataframe_to_rows(v_df,index=None,header=True):
ws.append(row)
wb.save('voltage.xlsx')
コメント
- Pythonファイルと同じフォルダに「voltage.csv」を保存しておく
- 8行目 df=pd〜 でcsvファイル「voltage.csv」を読み込む
- 10行目 v_df=df〜 でvoltageの列を指定する
- 12行目 for row in dataframe〜 でvoltage列を1行ずつ取得する
- 13行目 ws.append(row)で取得した値をwsへ書き込む
- 15行目 wb.save〜でエクセルファイルとして保存する
出力
元ファイル「voltage.csv」ファイルの中身です。時間と電圧が入力されています。
プログラムを実行すると電圧のみを抽出したエクセルファイルが作成されました。
ちなみにですが、下記のように「usecols」を使用しても同様の結果を得ることができます。
df=pd.read_csv('voltage.csv',usecols=['voltage'],encoding='shift_jis')
注記
うまくいかないときは「encoding=’shift_jis’」を「encoding=’utf-8’」などへ変えると良いかもしれません。macかwindowsかで変わります。