2017-11-05 18 views
1

txtファイルをpandasデータフレームに変換しようとしています。 まず複数の行は、各リストの各要素について説明パンダを使用してtxtファイルをdataframに変換する

['Tue Sep 12 15:13:56 +0000 2017', 'text. ', 0, 'en', 390, 529, 7138, 15727, False, -84.395235, 33.771232] 
['Tue Sep 12 15:13:59 +0000 2017', "text", 0, 'en', 648, 891, 2087, 5801, False, -84.321948, 33.752879] 
['Tue Sep 12 15:14:01 +0000 2017', 'text', 0, 'en', 217, 222, 959, 958, False, -82.849182, 27.865251] 
['Tue Sep 12 15:14:06 +0000 2017', 'text', 0, 'en', 71, 85, 2357, 1290, False, -82.29976, 27.857254] 

、このようなものであり、

time, text, retweet_count, language, friends_count, followers_count, favourites_count, status_count, verified 

私はpandasを使用し、それは私がする傾向がどのような動作しません。

df = pd.read_csv("second.txt", sep=',') 

次に、私はほぼ100,000列、0行を持っています。このファイルをデータフレームに変換するにはどうしたらいいですか? ありがとう!

+0

どのようにtxtが整理されているのか理解できませんでしたが、[ここ](http://pandas.pydata.org/pandas-docs/version/0.20.3/generated/pandas.DataFrame)のオプションをチェックします。 to_csv.html) –

+0

@FilipeLemos私の悪い。私は編集しました。私は自分のコードと 'txt'ファイルを混在させました。 – jaykodeveloper

+0

ファイルに大括弧が含まれているのはなぜですか?そのファイルを生成したものを修正して、通常のcsvを作成できますか? –

答えて

1

私はリストとして各行に読み、その後、データフレームのコンストラクタに渡します。

In [11]: import ast 

In [12]: pd.DataFrame([ast.literal_eval(line) for line in open("second.txt")]) 
Out[12]: 
           0  1 2 3 4 5  6  7  8   9   10 
0 Tue Sep 12 15:13:56 +0000 2017 text. 0 en 390 529 7138 15727 False -84.395235 33.771232 
1 Tue Sep 12 15:13:59 +0000 2017 text 0 en 648 891 2087 5801 False -84.321948 33.752879 
2 Tue Sep 12 15:14:01 +0000 2017 text 0 en 217 222 959 958 False -82.849182 27.865251 
3 Tue Sep 12 15:14:06 +0000 2017 text 0 en 71 85 2357 1290 False -82.299760 27.857254 

literal_eval対応するPythonのリストに文字列を変換します:

In [21]: line = "['Tue Sep 12 15:13:56 +0000 2017', 'text. ', 0, 'en', 390, 529, 7138, 15727, False, -84.395235, 33.771232]" 

In [22]: ast.literal_eval(line) 
Out[22]: 
['Tue Sep 12 15:13:56 +0000 2017', 
'text. ', 
0, 
'en', 
390, 
529, 
7138, 
15727, 
False, 
-84.395235, 
33.771232] 
+0

問題は、それが有効なjsonではないということです。したがって、jsonを読み取ることはできません。それは、最初に文字列の操作を行ってからjsonを読んだり、csvを読み込んだほうがパフォーマンスが良いということです。 –

+0

また、 'name'という引数をリスト(time、text、retweet_count ...)でデータフレームコンストラクターを使用して、名前付きの列を作成します。 – grovina

+0

@AndyHaydenええ、それは今まで私の最高です。ところで、私はこのエラーを受けました。 ValueError:不正なノードまたは文字列:<_ast.Subscript object at 0x118535908>すべての要素を 'str'に変換する必要がありますか? – jaykodeveloper

0

私はこれを考え出しました問題。 内側のリストが外側のリストにpythonコードで挿入されると、\nを追加しました。 @AndyHaydenソリューションが動作します。

+0

問題解決のために回答者のソリューションを使用した場合は、投票に忘れずに回答を受け入れてください。 –

関連する問題