Python学習チャンネル by PyQ

Pythonのオンライン学習プラットフォームPyQのオフィシャルブログです

つとむ先生のpandasドリル【CSV保存時の余計な列を除くには?】

f:id:kenken0326:20200423175631p:plain

f:id:kenken0326:20191021153602p:plain
tsutomu こんにちはPyQチームのtsutomuです。
pandasドリル第6回の問題は「CSV保存時の余計な列を除くには?」です。

つとむ先生の紹介

20数年、最適化関連の案件に従事するビープラウドの技術士(情報工学)。2014年より最適化のモデル作成にPythonを使い始め、効率的に開発できるようになる。東京海洋大学、青山学院大学、慶應義塾大学に非常勤講師としての勤務経験がある。また、オペレーションズ・リサーチ学会に約30年所属し、理事を2期務めた。
主な著書はモデリングの諸相Python言語によるビジネスアナリティクス今日から使える!組合せ最適化データ分析ライブラリーを用いた最適化モデルの作り方

問題

f:id:kenken0326:20191021153602p:plain
tsutomu

DataFrame型の変数dfに、テストの結果が入っています。 df.to_csv('result.csv')と下記のようにファイル'result.csv'に出力されます。

,Name,Subject,Point
0,Alice,国語,87
1,Alice,算数,72
2,Bob,国語,65
3,Bob,算数,92

これを、下記のように、最初の列を含まないように修正するにはどうすれば良いでしょうか?

Name,Subject,Point
Alice,国語,87
Alice,算数,72
Bob,国語,65
Bob,算数,92

問題で使うDataFrame

import pandas as pd

df = pd.DataFrame(
    [
        ['Alice', '国語', 87],
        ['Alice', '算数', 72],
        ['Bob', '国語', 65],
        ['Bob', '算数', 92],
    ],
    columns=['Name', 'Subject', 'Point'])
df
Name Subject Point
0 Alice 国語 87
1 Alice 算数 72
2 Bob 国語 65
3 Bob 算数 92

回答

df.to_csv('result.csv', index=False)

解説

実務では、pandasのDataFrameを作る時、以下のような既存のデータを読み込みます。

  • CSV, TSVファイル
  • EXCELファイル
  • SQLのSELECT結果
  • HTMLのテーブル
  • JSON

今回は、pandas.read_csvを使ってCSVファイルを読み込み、作成されたDataFrameを使用しました。

df.to_csv(ファイル名, index=False)とすると、indexの列を出力しないようになります。
デフォルトは、index=Trueなので、indexが出力されます。

詳しくは下記のドキュメントをご参照ください。

pandas.pydata.org

前回の問題

第5問【列から数字だけを抜き出すには?】はこちらをご覧ください。

blog.pyq.jp

Copyright ©2017- BeProud Inc. All rights reserved.