pandasドリル第6回の問題は「CSV保存時の余計な列を除くには?」です。
つとむ先生の紹介
20数年、最適化関連の案件に従事するビープラウドの技術士(情報工学)。2014年より最適化のモデル作成にPythonを使い始め、効率的に開発できるようになる。東京海洋大学、青山学院大学、慶應義塾大学に非常勤講師としての勤務経験がある。また、オペレーションズ・リサーチ学会に約30年所属し、理事を2期務めた。
主な著書はモデリングの諸相、Python言語によるビジネスアナリティクス、今日から使える!組合せ最適化、データ分析ライブラリーを用いた最適化モデルの作り方
問題
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が出力されます。
詳しくは下記のドキュメントをご参照ください。
前回の問題
第5問【列から数字だけを抜き出すには?】はこちらをご覧ください。