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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

568閲覧

DataFrame→スプレッドシート時に列番号まで書き込まれてしまう

kesko-gt

総合スコア5

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2023/03/26 08:00

実現したいこと

pandas.DataFrameのデータテーブルをスプレッドシートに書き込みたい

前提

  • Webページからスクレイピングしたデータをスプシに書き出したいというのが発端
  • ページ内のデータのうち、列名が書かれたところはいらないので(列名は自作するので)、画像の「いわし類」と書かれた行から取得したい

対象ページのテーブル

発生している問題

シートに書き出した時に、列番号まで一緒に書き出してしまいます。

スプレッドシート

Colab上でprint(df)としたものが以下です。
一番左に行番号の列がありますが、これはシートには書き出されていないのがまた不思議です。

ログ出力

該当のソースコード

Python

1# Google認証 2from google.colab import auth 3auth.authenticate_user() 4import gspread 5from google.auth import default 6creds, _ = default() 7gc = gspread.authorize(creds) 8 9# スクレイピング 10import pandas as pd 11from gspread_dataframe import set_with_dataframe 12url = "https://www.market.jafic.or.jp/today.files/sheet001.htm" 13df = pd.read_html(url, skiprows=5)[0] # 先頭5行は不要なのでスキップ 14 15# 書き出し 16ss_id = "******************" 17ss = gc.open_by_key(ss_id) 18sheet = ss.get_worksheet(0) 19set_with_dataframe(sheet, df)

試したこと

DataFrameから「1行目を削除する」とすればいけそうな気がしていたので、drop()iloc()でやってみたのですがうまくいかず...。
「行番号は削れてるが列番号はついてきてしまう」理由もぜひ知りたいので、詳しい方いらっしゃいましたら、勉強させていただきたいです。
よろしくお願いします。

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

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

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

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

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

melian

2023/03/26 08:09

set_with_dataframe の API ドキュメントを読んでみると、以下の様になっています。 https://pythonhosted.org/gspread-dataframe/#gspread_dataframe.set_with_dataframe gspread_dataframe.set_with_dataframe(worksheet, dataframe, row=1, col=1, include_index=False, include_column_header=True, resize=False, allow_formulas=True) include_index のデフォルト値が False なのでインデックス(行名)は含まれません。また、include_column_header のデフォルト値は True なので列名が含まれることになります。
kesko-gt

2023/03/26 12:19

ものの数分でご回答いただきありがとうございます...! 最終行を set_with_dataframe(sheet, df, include_column_header=False) とすることで、意図した形で書き出すことができました。 勉強になりました、ありがとうございました。
guest

回答1

0

自己解決

melianさんからコメントをいただいた以下の方法で解決しました。

Python

1# 最終行のコード 2set_with_dataframe(sheet, df, include_column_header=False)

投稿2023/03/26 12:20

kesko-gt

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問