csvファイルの特定の列をエクセルへ転記する方法 Dataframe_to_row / openpyxl / Python

Python備忘録。内容は初心者向けです。

先日アップした「csvの値を1行ずつエクセルへ転記する方法」の続きです。

今回は特定の列のみをエクセルへ転記しようと思います。



openpyxlのDataframe_to_row

前回同様に使用するのは、エクセルファイルを読み書きできるPythonライブラリopenpyxlのDataframe_to_row関数です。

NOTE
  • 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」を保存しておく
  • df=pd〜 で「voltage.csv」の読み込み
  • v_df=df〜 でvoltageの列を指定
  • for row in dataframe〜 でvoltage列を1行ずつ取得
  • ws.append(row)で取得した値をwsへ書き込み

出力


「voltage.csv」ファイルの中身。時間と電圧が入力されています。


プログラムを実行すると電圧のみを抽出したエクセルファイルが作成されました。

ちなみに「usecols」を使用しても同様の結果になります。


df=pd.read_csv('voltage.csv',usecols=['voltage'],encoding='shift_jis')

注記

うまくいかないときは「encoding=’shift_jis’」を「encoding=’utf-8’」などへ変えると良いかもしれません。