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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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はプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

5200閲覧

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はプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿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

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

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

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

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

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

guest

回答1

0

ベストアンサー

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

投稿2022/08/21 12:52

RiaFeed

総合スコア2701

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

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

退会済みユーザー

退会済みユーザー

2022/08/21 13:12

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問