2017-10-09 12 views
0

Ich möchte einen Datensatz einer .dat Datei in csv Datei konvertieren. Das Datenformat aussieht,Konvertieren von .dat in .csv in Python

Each row begins with the sentiment score followed by the text associated with that rating.

Image of the .dat file

ich das hat die Stimmung Wert will (-1 oder 1) eine Spalte haben und den Text des Beitrags zu dem Stimmungswert entspricht, eine haben, überprüfen Sie, um eine Spalte zu haben.

, was ich bisher

TRIED
import pandas as pd 
import seaborn as sns 
import matplotlib.pyplot as plt 
import numpy as np 
import csv 

# read flash.dat to a list of lists 
datContent = [i.strip().split() for i in open("train.dat").readlines()] 

# write it as a new CSV file 
with open("train.csv", "wb") as f: 
    writer = csv.writer(f) 
    writer.writerows(datContent) 
def your_func(row): 
    return row['Sentiments']/row['Review'] 

columns_to_keep = ['Sentiments', 'Review'] 
dataframe = pd.read_csv("train.csv", usecols=columns_to_keep) 
dataframe['new_column'] = dataframe.apply(your_func, axis=1) 

print dataframe 

Bildschirmaufnahme des resultierenden train.csv es ein Komma nach jedem Wort in der Überprüfung hat.

Output of the train.csv

+1

Also was hast du über Pandas ''' 'read_csv''' gelernt, es ist ein One-Liner. – sascha

+1

Was trennt die Partitur vom Text? Ein Leerzeichen oder ein Tab? –

+1

Was hast du bisher versucht? – Unni

Antwort

2

Wenn alle Zeilen, dass konsistentes Format folgen, können Sie pd.read_fwf verwenden. Dies ist etwas sicherer als die Verwendung von read_csv für den Fall, dass Ihre zweite Spalte auch das Trennzeichen enthält, das Sie teilen möchten.


Probe data.txt:

-1 ieafxf rjzy xfxk ymi wuy 
+1 lqqm ceegjnbjpxnidygr 
-1 zss awoj anxb rfw kgbvnl
df = pd.read_fwf('data.txt', header=None, 
     widths=[2, int(1e5)], names=['label', 'text']) 

print(df) 
    label      text 
0  -1 ieafxf rjzy xfxk ymi wuy 
1  1  lqqm ceegjnbjpxnidygr 
2  -1 zss awoj anxb rfw kgbvnl 
+0

@COLDSPEED hey das Problem liegt in der Tatsache, dass ich keine Header wie in Label und Text habe, mache ich sie gerade aus? – KoushikProgrammer

+0

@KoushikProgrammer Ich weiß, dass du sie nicht hast, ich habe sie für dich zusammengestellt. Sie müssen Ihre Datendatei nicht ändern. –

+0

@COLDSPEED danke. Hey, was ist der Zweck von int (1e15)? – KoushikProgrammer

0

Wie in den Kommentaren erwähnt, würde read_csv hier angemessen sein.

df = pd.read_csv('train_csv.csv', sep='\t', names=['Sentiments', 'Review']) 

    Sentiments  Review 
0   -1 alskjdf 
1   1  asdfa 
2   1  afsd 
3   -1  sdf