Pandasでtxtを読みこんでもうまくheaderに名前がつかない
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 980
review_df = pd.read_table('reviews.txt', encoding='utf-8',engine='python', names=('num', 'SEP', 'text'))
print(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の一部
5 __SEP__ 職場の義理チョコです。 パッケージが落ち着いた感じなので 年配の方にもいいと思います。
5 __SEP__ パッケージも包装も申し分無いです。ありがとうございましたか
5 __SEP__ さすがに帝国ホテル。美味しかった。バレンタイン用に主人に買いました。
5 __SEP__ 二人に贈ったのですがどちらも大変喜んでもらえました。一人はその場で写真を撮ったそうです。さすが帝国ホテル。大人っぽい雰囲気だったので選びました。
5 __SEP__ 主人用に購入したのですが、わけてもらって食べたらとてもおいしかったです。また購入したいです。
5 __SEP__ 人にプレゼントしてみました。あげた人はどうなのかわかりませんが、大人な雰囲気とリッチな感じがいいなと思いました。
5 __SEP__ バレンタインようにこのくらいの金額の商品で高級そうなものを探していました。プレートのものとこちらをお願いしました。 プレートと同じく包装紙やおリボンは高級感がありますが、裏のシールと個別のビニールの袋が残念です。 ソムリエギフトの商品はすぐに売り切れてしまうので、そこも欲しい時に悩んでいるのなくなり残念ですがショップのスタッフは丁寧です、 また、海外のお土産や、日本だけの習慣のホワイトディーようにこうにゅ痛いと思っています。
5 __SEP__ さすが 帝国ホテルさんです。とても美味しかったです。 バレンタインは これに決まり。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
文章内にスペースを含んでいる以上、Separatorをスペースにする事は出来ませんね・・。
もし "__SEP__"
が全ての行に含まれているという保証があるのであれば (前後のスペースも含めて)" __SEP__ "
を Separator に設定するのが現実的ではないでしょうか。
import pandas as pd
review_df = pd.read_table('reviews.txt', encoding='utf-8', engine='python', sep=' __SEP__ ', header=None, names=['num','text'])
print(review_df)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2018/07/12 11:50