2017-11-23 14 views
1

私は、read_csvまたはread_tableを使ってパンダで読み込もうとしたログファイルを持っています。私はこの結果の例を得ました:パンダでログファイルを読む

0 date=2015-09-17 time=21:05:35  duration=0 etc... 

on 1カラム。

私はなるだろうので、それぞれの行を分割名前を取る(日付、時間のように、...)と列に変換したいと思います:

  date   time  duration ... 
    0 2015-09-17  21:05:35  0    

ありがとうございます!

+0

が明確な区切りはありますか? E. 2つ以上のホワイトスペース? ( 'sep = \ s {2、}')?または、問題の区切り記号にデータが混乱していますか? – jezrael

+0

はいsepがありますが、空白は1つと思いますが、267行目の30個のフィールドが予想されていました。31複数の文字区切り文字が使用されていると、引用符が無視される可能性があります。 – datascana

+1

私はそれについて心配していた - データが混乱しているか、別の問題かもしれない。だから私の意見では、実際にデータに依存する問題であるため、サンプルデータファイルなしでは本当に難しいです。 – jezrael

答えて

0

-----矛盾間隔のための口座へ編集答え:

ない神託のアプローチがわからを、しかし、ここで仕事ができる方法があります。一例としてOPのデータサンプルを用い

import pandas as pd 

log_data = open('log_sample.txt', 'r') 
split_list = [] 

for line in log_data: 
    thing1 = line.split('=') 
    #print(thing1) 
    date = thing1[1][:10] 
    time = thing1[2][:8] 
    dur = thing1[3] 

    split_list.append([date, time, dur]) 

df = pd.DataFrame(split_list, columns=['date', 'time', 'duration']) 
df 

----- :等号の各ラインとスプリットを介し

0 date=2015-09-17 time=21:05:35  duration=0 
1 date=2015-09-17 time=21:05:36  duration=0 
2 date=2015-09-17 time=21:05:37  duration=0 
3 date=2015-09-17 time=21:05:38  duration=0 
4 date=2015-09-17 time=21:05:39  duration=0 
5 date=2015-09-17 time=21:05:40  duration=0 

Iループは記号は、次いで、所望のテキストをつかみます最初の回答:

@jezraelがコメントに言及しているように、read_csv内の "sep"引数を利用できます。

pd.read_csv('test.txt', sep=r'\\t', engine='python') #[1] 

参照:

+0

私はそのオプションを試してみました。エラーを起こしています。267行目の30のフィールドが見込まれました。エラーは、複数の区切り文字が使用されているときに無視されているためです。 – datascana

+0

等号で分割し、必要に応じて辞書やリストに変数を割り当てる際に、各行をループすることができますか? – datadavis2