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

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

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

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

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

pandas

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

解決済

ValueError: 5 columns passed, passed data had 6 columns のエラー解消法

退会済みユーザー

退会済みユーザー

総合スコア0

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

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

pandas

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1回答

0グッド

0クリップ

1093閲覧

投稿2022/08/21 12:43

前提・実現したいこと

PythonとTwitter APIを使用して特定のアカウントのツイートをExcelファイルに出力したいです。

ですがエラーメッセージ最終行にある、
「ValueError: 5 columns passed, passed data had 6 columns」
の解消法が分からず困っています。

ご存じの方がいらっしゃいましたらご教授いただけますと幸いです。
使用エディタはJupyter Labです。

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- AssertionError Traceback (most recent call last) File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/internals/construction.py:982, in _finalize_columns_and_data(content, columns, dtype) 981 try: --> 982 columns = _validate_or_indexify_columns(contents, columns) 983 except AssertionError as err: 984 # GH#26429 do not raise user-facing AssertionError File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/internals/construction.py:1030, in _validate_or_indexify_columns(content, columns) 1028 if not is_mi_list and len(columns) != len(content): # pragma: no cover 1029 # caller's responsibility to check for this... -> 1030 raise AssertionError( 1031 f"{len(columns)} columns passed, passed data had " 1032 f"{len(content)} columns" 1033 ) 1034 elif is_mi_list: 1035 1036 # check if nested list column, length of each sub-list should be equal AssertionError: 5 columns passed, passed data had 6 columns The above exception was the direct cause of the following exception: ValueError Traceback (most recent call last) Input In [10], in <cell line: 10>() 7 df.to_excel('tw_%s.xlsx'%tw_id, sheet_name='Sheet1') 9 print("end") ---> 10 get_tweets() Input In [10], in get_tweets() 4 for tweet in tweepy.Cursor(api.user_timeline,screen_name = tw_id,exclude_replies = True).items(): 5 tweet_data.append([tweet.id,tweet.created_at,tweet.created_at+datetime.timedelta(hours=9),tweet.text.replace('\n',''),tweet.favorite_count,tweet.retweet_count]) ----> 6 df = pd.DataFrame(tweet_data,columns=columns_name) 7 df.to_excel('tw_%s.xlsx'%tw_id, sheet_name='Sheet1') 9 print("end") File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/frame.py:721, in DataFrame.__init__(self, data, index, columns, dtype, copy) 716 if columns is not None: 717 # error: Argument 1 to "ensure_index" has incompatible type 718 # "Collection[Any]"; expected "Union[Union[Union[ExtensionArray, 719 # ndarray], Index, Series], Sequence[Any]]" 720 columns = ensure_index(columns) # type: ignore[arg-type] --> 721 arrays, columns, index = nested_data_to_arrays( 722 # error: Argument 3 to "nested_data_to_arrays" has incompatible 723 # type "Optional[Collection[Any]]"; expected "Optional[Index]" 724 data, 725 columns, 726 index, # type: ignore[arg-type] 727 dtype, 728 ) 729 mgr = arrays_to_mgr( 730 arrays, 731 columns, (...) 734 typ=manager, 735 ) 736 else: File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/internals/construction.py:519, in nested_data_to_arrays(data, columns, index, dtype) 516 if is_named_tuple(data[0]) and columns is None: 517 columns = ensure_index(data[0]._fields) --> 519 arrays, columns = to_arrays(data, columns, dtype=dtype) 520 columns = ensure_index(columns) 522 if index is None: File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/internals/construction.py:883, in to_arrays(data, columns, dtype) 880 data = [tuple(x) for x in data] 881 arr = _list_to_arrays(data) --> 883 content, columns = _finalize_columns_and_data(arr, columns, dtype) 884 return content, columns File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/core/internals/construction.py:985, in _finalize_columns_and_data(content, columns, dtype) 982 columns = _validate_or_indexify_columns(contents, columns) 983 except AssertionError as err: 984 # GH#26429 do not raise user-facing AssertionError --> 985 raise ValueError(err) from err 987 if len(contents) and contents[0].dtype == np.object_: 988 contents = _convert_object_array(contents, dtype=dtype) ValueError: 5 columns passed, passed data had 6 columns

該当のソースコード

#ツイートをエクセルファイルに出力する import tweepy import pandas as pd import datetime # TweepyAPI KEY CONSUMER_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXX" CONSUMER_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ACCESS_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" ACCESS_TOKEN_SECRET = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" #tweepyの設定 auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) api = tweepy.API(auth) columns_name=["TW_NO","TW_TIME","TW_TEXT","RT","FAV"] #ここで取得したいツイッターアカウントIDを指定する tw_id="karupoimou" #ツイート取得 def get_tweets(): tweet_data = [] for tweet in tweepy.Cursor(api.user_timeline,screen_name = tw_id,exclude_replies = True).items(): tweet_data.append([tweet.id,tweet.created_at,tweet.created_at+datetime.timedelta(hours=9),tweet.text.replace('\n',''),tweet.favorite_count,tweet.retweet_count]) df = pd.DataFrame(tweet_data,columns=columns_name) df.to_excel('tw_%s.xlsx'%tw_id, sheet_name='Sheet1') print("end") get_tweets()

補足情報(FW/ツールのバージョンなど)

Python:3.9.12
Tweepy:4.10.0

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/08/21 16:36

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

回答1

0

ベストアンサー

columns_nameで設定した項目数が5つなのに対してtweet_dataの項目数が6つなのでエラーが出ているっぽいですね
tweet.created_atに当たる項目がcolumns_name内になさげ

投稿2022/08/21 12:52

RiaFeed

総合スコア2687

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

退会済みユーザー

退会済みユーザー

2022/08/21 13:12

無事に解消できました! 初歩的な質問大変失礼いたしました。

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

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

pandas

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。