2017-10-09 366 views
0

我想將.dat文件的數據集轉換爲csv文件。數據格式的樣子,將.dat轉換爲python中的.csv

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

Image of the .dat file

我想要的有情感值(-1或1)有一列並審查對應的情感值有一個文本審查有專欄。

是我的嘗試到目前爲止

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 

產生的train.csv它在審查每一個字後的逗號樣本屏幕截圖。

Output of the train.csv

+1

那麼,你是如何學習熊貓的''''read_csv''',這是一個單線程。 – sascha

+1

什麼是分數與文本的分數?空間或標籤? –

+1

到目前爲止您嘗試過什麼? – Unni

回答

2

如果所有的行遵循統一的格式,你可以使用pd.read_fwf。這比使用read_csv要安全一些,如果第二列還包含您試圖分割的分隔符。


樣品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嘿問題在於事實上,我沒有標題和文本中的標題,我只是讓它們? – KoushikProgrammer

+0

@KoushikProgrammer我知道你沒有他們,我爲他們做了。您不必修改您的數據文件。 –

+0

@COLDSPEED謝謝。嘿int(1e15)的目的是什麼? – KoushikProgrammer

0

正如評論所說,read_csv將在這裏是合適的。

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