質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

1258閲覧

pythonで複数行のヘッダーを残したまま新たなファイルを作る

firehiko18

総合スコア37

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/23 02:24

変更前エクセルに1~4行目にファイルの説明があり5行目からデータがあります。
4行目までのコメント行は残したまま5行目からのデータを変更して新たなエクセルを作りたいです。
変更前エクセルから4行目までのを作り、変更したデータを5行目から差し込むようなイメージでしましたが、特定の行からデータフレームを入れる処理がわかりません。
わかる方いましたらよろしくお願いします。

変更前エクセルデータ
|コメント行|||||
|:--|:--:|--:|--:|
|コメント行|||
|コメント行|||
|コメント行|||
|客先|客先CD|単価|数量|金額|
|AA商事|10|200|5|1000
|BB百貨店|11|400|2|800
|CC株式会社|12|100|10|1000

変更後イメージ(例:客先CDなくす)

コメント行
コメント行
コメント行
コメント行
客先単価数量金額
AA商事2001000
BB百貨店400800
CC株式会社100101000

試したこと
1:変更前エクセルからヘッダー4行を読み取る
2:変更前エクセルから5行目からを読み取る
3:2の処理で読み取ったデータを変更する
4変更したデータをエクセルにする。

import pandas as pd
header4 = pd.read_excel("sample.xlsx",header=None,nrows=4)
df = pd.read_excel("sample.xlsx",header=4)
df2 = #データ処理
df2.to_excel("sa,mple.xlsx",index = False,header=None)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

おそらく、コメント行は空ではなく何かが入っているでしょうね。
それを残したいというのは、pandasでは不可能ではないかもしれませんが、止めた方が良いと思います。

こういう処理は、openpyxlの方が向いています。

PythonでExcelファイル(xlsx)を読み書きするopenpyxlの使い方を読んで、まずご自身でやってみてください。

投稿2021/07/23 02:57

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

firehiko18

2021/07/23 23:03

簡易的に伝えるため今回細かい処理を記載しておりませんでした。 行ないたい処理として複数の指定した列を削除した後上記のようにヘッダー残して編集データを入れたいと思っております。 以前指定した複数列の削除にはpandasでするよう教えてもらい、できればpandasでできないかと模索しておりました。(指定した複数の列とは上記表でいうと「単価」「金額」など複数の列の名前での削除。便宜上、上記表では列名は5つしか書きませんでしたが列名が実際は約20程ありopenpyxlでは難しいと教えてもらいました) 今回の質問とは全然違いますが、pandasで処理を行い、openapyxlでヘッダー残してデータを記載するということもimportしておけば可能なのでしょうか?調べた感じでは無理そうですが・・
ppaul

2021/07/24 00:22

調べて見ると、私もopenpyxlよりもpndasを使った方がよいという回答をしていますね。 部分解を組み合わせると全体解となるわけではありません。それができるためには、全体問題を適切な部分問題に分解することが必要です。全体問題を適切な部分問題に分解するためには、個々の技術でできることとできないことの知識が必要です。 firehiko18さんの質問は、分割した問題に対する部分解を求め、組み合わせようとすると無理だという結論が出たようです。 Pythonにこだわるなら、手間はかかるけれどもopenpyxlで頑張るか、win32comでやるのでしょう。やったことはありませんが、win32comでやるならVBAforEXCELのオブジェクトモデルを熟知していないと難しそうです。 Pythonでやるという条件を外すのであれば、VBAforEXCELを直接使ってやるのが最適でしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問