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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

300閲覧

Pandasでtxtを読みこんでもうまくheaderに名前がつかない

gymgym

総合スコア97

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/07/12 01:39

Python

1review_df = pd.read_table('reviews.txt', encoding='utf-8',engine='python', names=('num', 'SEP', 'text')) 2print(review_df.iloc[:10, :])
num SEP text 0 5 __SEP__ 職場の義理チョコです。 パッケージが落ち着いた感じなので 年配の方にもい... NaN NaN 1 5 __SEP__ パッケージも包装も申し分無いです。ありがとうございましたか NaN NaN 2 5 __SEP__ さすがに帝国ホテル。美味しかった。バレンタイン用に主人に買いました。 NaN NaN 3 5 __SEP__ 二人に贈ったのですがどちらも大変喜んでもらえました。一人はその場で写真を... NaN NaN 4 5 __SEP__ 主人用に購入したのですが、わけてもらって食べたらとてもおいしかったです。... NaN NaN 5 5 __SEP__ 人にプレゼントしてみました。あげた人はどうなのかわかりませんが、大人な雰... NaN NaN 6 5 __SEP__ バレンタインようにこのくらいの金額の商品で高級そうなものを探していました... NaN NaN 7 5 __SEP__ さすが 帝国ホテルさんです。とても美味しかったです。 バレンタインは こ... NaN NaN 8 5 __SEP__ 主人が会社の後輩の女の子からバレンタインでもらってきたので、お返しに注文... NaN NaN 9 5 __SEP__ ホワイトデーのお返しに使用し、差し上げた方から高級で美味しく 有り難かっ... NaN NaN

理想はnumの行に数字、SEPのところに__SEP__、textの行に文章といった構成にしたいのですが、うまく分けられません。

review_df = pd.read_csv('rakuten_reviews.txt', encoding='utf-8',engine='python', names=('num', 'SEP', 'text')) print(review_df.iloc[:10, :])

にすると、

Traceback (most recent call last): File "dic.py", line 11, in <module> review_df = pd.read_csv('rakuten_reviews.txt', encoding='utf-8',engine='python', names=('num', 'SEP', 'text')) File "/home//lib/python3.5/site-packages/pandas/io/parsers.py", line 678, in parser_f return _read(filepath_or_buffer, kwds) File "/home//lib/python3.5/site-packages/pandas/io/parsers.py", line 446, in _read data = parser.read(nrows) File "/home//lib/python3.5/site-packages/pandas/io/parsers.py", line 1036, in read ret = self._engine.read(nrows) File "/home/lib/python3.5/site-packages/pandas/io/parsers.py", line 2266, in read alldata = self._rows_to_cols(content) File "/home/lib/python3.5/site-packages/pandas/io/parsers.py", line 2909, in _rows_to_cols self._alert_malformed(msg, row_num + 1) File "/home//lib/python3.5/site-packages/pandas/io/parsers.py", line 2676, in _alert_malformed raise ParserError(msg) pandas.errors.ParserError: Expected 3 fields in line 3470, saw 4

以上のようなエラーが出ます。

どのようにしたらうまくいくのでしょうか。

よろしくお願い致します。

reviews.txtの一部

reviews.txtの一部

15 __SEP__ 職場の義理チョコです。 パッケージが落ち着いた感じなので 年配の方にもいいと思います。 25 __SEP__ パッケージも包装も申し分無いです。ありがとうございましたか 35 __SEP__ さすがに帝国ホテル。美味しかった。バレンタイン用に主人に買いました。 45 __SEP__ 二人に贈ったのですがどちらも大変喜んでもらえました。一人はその場で写真を撮ったそうです。さすが帝国ホテル。大人っぽい雰囲気だったので選びました。 55 __SEP__ 主人用に購入したのですが、わけてもらって食べたらとてもおいしかったです。また購入したいです。 65 __SEP__ 人にプレゼントしてみました。あげた人はどうなのかわかりませんが、大人な雰囲気とリッチな感じがいいなと思いました。 75 __SEP__ バレンタインようにこのくらいの金額の商品で高級そうなものを探していました。プレートのものとこちらをお願いしました。 プレートと同じく包装紙やおリボンは高級感がありますが、裏のシールと個別のビニールの袋が残念です。 ソムリエギフトの商品はすぐに売り切れてしまうので、そこも欲しい時に悩んでいるのなくなり残念ですがショップのスタッフは丁寧です、 また、海外のお土産や、日本だけの習慣のホワイトディーようにこうにゅ痛いと思っています。 85 __SEP__ さすが 帝国ホテルさんです。とても美味しかったです。 バレンタインは これに決まり。

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

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

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

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

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

guest

回答1

0

ベストアンサー

文章内にスペースを含んでいる以上、Separatorをスペースにする事は出来ませんね・・。
もし "__SEP__" が全ての行に含まれているという保証があるのであれば (前後のスペースも含めて)" __SEP__ " を Separator に設定するのが現実的ではないでしょうか。

Python

1import pandas as pd 2 3review_df = pd.read_table('reviews.txt', encoding='utf-8', engine='python', sep=' __SEP__ ', header=None, names=['num','text']) 4 5print(review_df)

投稿2018/07/12 02:46

magichan

総合スコア15898

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

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

gymgym

2018/07/12 02:50

ありがとうございます。理想的な実装ができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問